MySQL 5.7使用 GTID 和 Binlog高可用方案

news2025/1/11 0:52:40

文章目录

  • 介绍
    • GTID和Binlog的关系
      • GTID(Global Transaction ID)
      • Binlog(二进制日志)
  • MySQL5.7基于yum搭建
    • 安装 MySQL
    • 初始化并设置远程登录密码
  • 配置基于GTID的复制模式
    • 第一台主服务器配置
      • 主服务器配置
      • 启动从服务
    • 第二台主服务器配置
      • 主服务器配置
      • 启动从服务

介绍

GTID和Binlog的关系

GTID 和 Binlog 是互补的技术。GTID 提供了更高级的事务跟踪和管理机制,而 Binlog 则是底层的日志记录机制。在 GTID 模式下,每个事务在写入 binlog 时都会附带一个 GTID,从而实现更加可靠和简化的复制管理。

  • GTID 用于全局唯一标识事务,简化复制管理和故障恢复。
  • Binlog 用于记录数据更改事件,是数据恢复和复制的基础。

在许多高可用方案中,GTID 和 Binlog 是结合使用的。GTID 为每个事务提供唯一标识符,简化了复制和故障恢复,而 Binlog 依然是底层的变更日志机制。


GTID(Global Transaction ID)

  1. 定义:
    GTID 是一个全局唯一的事务标识符。它由 MySQL 5.6 引入,用于跟踪和标识服务器上的每个事务。

  2. 组成:
    GTID 由 source_id:transaction_id 组成,其中 source_id 通常是服务器的 UUID,transaction_id 是事务在该服务器上的序号。

  3. 用途:

    • 用于主从复制:GTID 确保每个事务在主服务器和从服务器上都有唯一的标识,有助于简化复制和故障恢复。
    • 自动故障切换:在 GTID 模式下,复制的管理变得更加简单和自动化,有助于自动故障切换。
  4. 优势:

    • 自动化:GTID 模式下,可以实现更自动化的故障恢复和复制管理。
    • 去重:避免了事务重复应用的问题。、
    • 灵活性:在主从切换和故障恢复中更加灵活。、

Binlog(二进制日志)

  1. 定义:
    Binlog 是 MySQL 用于记录所有更改数据的 SQL 语句的日志文件。它记录所有导致数据更改的事件(如插入、更新、删除操作)。

  2. 组成:
    Binlog 文件由一系列事件组成,每个事件记录了某个数据更改操作。

  3. 用途:

    • 数据恢复:通过重放 binlog,可以恢复数据库到特定的时间点。
    • 主从复制:从服务器可以读取主服务器的 binlog 并重放其中的事件,从而实现数据同步。
  4. 优势:

    • 数据恢复:通过 binlog,可以将数据库恢复到特定时间点。
    • 复制:Binlog 是 MySQL 主从复制的基础,确保从服务器可以同步主服务器的数据变化。

MySQL5.7基于yum搭建

安装 MySQL

# 下载MySQL yum 包
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm

# 查看是否有mariadb
rpm -qa |grep mariadb

# 删除mariadb依赖
yum remove -y mariadb-libs.x86_64

# 安装密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 安装 MySQL 源
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm

# 安装 MySQL 服务器
yum install -y mysql-community-server

# 启动服务
systemctl start mysqld
systemctl enable mysqld

# 防火墙开放端口
firewall-cmd  --permanent --add-port=3306/tcp
firewall-cmd --reload

初始化并设置远程登录密码

查看密码

[root@mysql1 ~]# grep 'temporary password' /var/log/mysqld.log
2024-08-05T02:26:48.667443Z 1 [Note] A temporary password is generated for root@localhost: y7XtM-u9dVwt

登录MySQL

[root@mysql mysql]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.35

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

初始化密码(密码有复杂度,数字大小写和符号)

mysql> ALTER USER USER() IDENTIFIED BY 'Gdh%Y4C4BMyH';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

支持root用户允许远程连接mysql数据库

mysql> grant all privileges on *.* to 'root'@'%' identified by 'Gdh%Y4C4BMyH' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

配置基于GTID的复制模式

GTID(全局事务标识符)是 MySQL 提供的一种新型复制方式,它简化了主从复制的配置和管理,确保数据的一致性和完整性。在配置 MySQL 双主复制之前,我们需要确保两台主服务器都启用了 GTID 模式。

在2台MySQL服务器上创建拥有复制权限的用户

# 创建拥有复制权限的用户
grant replication slave on *.* to 'synchronize'@'%' identified by 'Abc-1234';

# 刷新权限使其生效
flush privileges;


第一台主服务器配置

主服务器配置

修改第一台主服务器的配置文件 /etc/my.cnf,添加以下内容:

server-id = 100                 # 设置服务器的唯一标识符。
log_bin = mysql-bin             # 启用二进制日志记录。
gtid_mode = ON                  # 启用 GTID 模式。
enforce_gtid_consistency = true # 强制 GTID 一致性。

在这里插入图片描述

修改完配置文件后,重启 MySQL 服务使配置生效:

systemctl restart mysqld

启动从服务

在创建好用户之后,进入 MySQL 数据库执行以下命令,将第二台服务器配置为从服务器:

进入 MySQL数据库

mysql -u root -p 

执行以下命令

change master to
master_host="172.25.14.12",
master_user="synchronize",
master_password="Abc-1234",
master_auto_position=1;

在这里插入图片描述

启动从服务:

start slave;

第二台主服务器配置

主服务器配置

在第二台主服务器上,同样需要修改配置文件 /etc/my.cnf,添加以下内容:

server-id = 101                 # 设置服务器的唯一标识符。
log_bin = mysql-bin             # 启用二进制日志记录。
gtid_mode = ON                  # 启用 GTID 模式。
enforce_gtid_consistency = true # 强制 GTID 一致性。

修改完配置文件后,重启 MySQL 服务使配置生效:

systemctl restart mysqld

启动从服务

进入 MySQL 数据库执行以下命令,将第一台主服务器配置为从服务器:

进入 MySQL数据库

mysql -u root -p 

执行以下命令

change master to
master_host="172.25.14.11",
master_user="synchronize",
master_password="Abc-1234",
master_auto_position=1;

启动从服务:

start slave;

查看是否成功同步

show slave status\G;

在这里插入图片描述



参考文档:
Centos7.0 安装 MYSQL5.7
Linux中MySQL 双主复制(互为主从)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux学习】文件系统 - 第三篇

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 🦅重定向原理以及实现🐱dup2系统调用实现重定向。🎈dup2 系统调用🍑在自定义shell中实…

MM 10 -采购- 标准采购订单

思维导图 说明 采购订单页面介绍 抬头 支付、开票: 付款条件 文本: 机构数据: 其余sheet不常用 行项目 物料 数量 交货日期 价格 :信息记录带出来 工厂 行项目明细 物料 供应商物料号 供应商子范围: 批次&a…

PXE安装配置(rhel7)

实验需求: rhel7 虚拟机 所需软件安装: sudo yum install -y dhcp tftp-server httpd syslinux system-config-kickstart 启动: system-config-kickstart 制作ks文件 注意:File----Save保存一下 打开root下的ks.cfg在分区信…

python:将 NWPU_VHR-10 遥感目标检测数据集转换成 YOLO 格式

作者:CSDN _养乐多_ 本文将介绍将 NWPU_VHR-10 遥感目标检测数据集转换成 YOLO 格式的 python 脚本。 文章目录 一、数据集介绍1.1 数据集下载1.2 数据集介绍1.3 数据格式 二、格式转换三、完整代码 一、数据集介绍 1.1 数据集下载 https://opendatalab.com/Ope…

GRU门控循环单元【数学+图解】

文章目录 1、简介2、门控机制3、公式4、图解GRU4.1、重置门和更新门4.2、候选隐藏状态和隐藏状态⭐ 5、LSTM与GRU的对比6、应用7、训练技巧 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习&#xff…

MATLAB车道线检测系统

研究了汽车辅助驾驶系统中的计算机视觉问题 . 一方面 , 用小波变换对高速公路上的道路边缘进行检测 ; 另一方面 , 利用灰度以及几何特征实时跟踪和检测车道边缘 , 通过建立道路边缘模型 , 采用数据拟合的方法确定边界轨迹方程 , 从而估算出公路的延伸方向 , 实现汽车的自动防偏…

信号链直流误差

1 简介 在信号链中,可能会累积的误差有两类:直流和交流误差。直流或静态误差(如增益和失调误差)有助于了解信号链的精度或灵敏度。交流类误差也称为噪声和失真,限制着系统的性能和动态范围。这两类误差都需要了解&…

js中的ajax【Axios,XMLHttpRequest,Promise,async】回调函数地狱等问题

目录 前置知识 1.什么是异步请求? 2.什么是回调函数 3.如何查看网页的异步请求(XHR)? 4.什么是ajax jquery的ajax,xhr,axios关系 正文---几种请求之间的关系 axios Axios的诞生 Axios的介绍 定义…

同城交易小程序的设计

管理员账户功能包括:系统首页,个人中心,商家管理,用户管理,商品分类管理,商品信息管理,订单管理,系统管理 微信端账号功能包括:系统首页,商品信息&#xff0…

2024年“华数杯”数学建模竞赛C题完整解析 | 代码与论文分享

C题 技术文档(论文)数据预处理问题一问题二问题三问题四 数据与代码问题一问题二问题三问题四 技术文档(论文) 29页,1w字,完整论文请看文章最后~ 数据预处理 (1)利用python对数据文件…

【安当产品应用案例100集】005-安当ASP实现Exchange双因素登录认证

Exchange双因素登录通过增加额外的安全验证层,可以有效提高企业邮箱系统的安全性,减少了数据泄露和账号被盗的风险,同时也符合了日益严格的安全合规要求。 其必要性主要体现在以下几个方面: 提高安全性:传统的用户名…

未授权访问漏洞系列详解⑤!

Kubernetes Api Server未授权访问漏洞 Kubernetes 的服务在正常启动后会开启两个端口:Localhost Port(默认8080)Secure Port(默认6443)。这两个端口都是提供 Api Server 服务的,一个可以直接通过Web 访问,另一个可以通过 kubectl 客户端进行调用。如果运…

html+css 实现hover上下边框生长

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

平安城市行业无人机解决方案(夜间作业场景应用)

夜间作业场景痛点: 夜间隐蔽作业需要权衡看清楚和隐蔽性 可见光相机夜间无法使用 “五合一”混合夜视传感器-H20N 夜间侦察巡逻 H20N星光级相机提升夜间作业覆盖效率 Zenmuse H20N变焦镜头夜景模式效果 Zenmuse H20N变焦镜头夜景模式效果 Zenmuse H20T变焦镜头夜…

【Android】四大组件(Activity、Service、Broadcast Receiver、Content Provider)、结构目录

文章目录 Android系统架构Android四大组件ActivityServiceBroadcast ReceiverContent Provider 两大视图主要结构目录 Android系统架构 https://blog.csdn.net/xzzteach/article/details/140904613 Android四大组件 Activity 一个 Activity 包含了用户能够看到的界面&#xff0…

判断Windows设备是否为翻新

网购设备难免踩坑,一定要学会查验,及时保存证据并投诉商家。 1、查验包装信息,是否有拆封痕迹 商家翻新处理的第一道工序就是换个完整的包装,一般不会把拆过的包装打包卖给买家,除非声明是二手。 2、查验序列号&#x…

干货-并发编程提高——线程的唤醒(七)

没有参数的wait()方法等价于wait(0),等价于永远等下去。虚假唤醒:一个线程也能在没有被通知,中断,或超时的情况下被唤醒。也即所谓的“虚假唤醒”。解决虚假唤醒的办法就是通过while循环来判断条件。 何为虚假唤醒 简单讲,要避免使…

磷酸铁锂与三元锂:谁会取得压倒性的胜利?

在电动车市场中,磷酸铁锂(LFP)和三元锂(NCM/NCA)电池是两种主要的锂离子电池技术。近年来,关于这两种电池的讨论愈发热烈。本文将深入探讨磷酸铁锂与三元锂的真正区别,以及它们在未来电动车市场…

AI8-文本检测

文本检测任务是找出图像或视频中的文字位置。不同于目标检测任务,目标检测不仅要解决定位问题,还要 解决目标分类问题。 文本在图像中的表现形式可以视为一种‘目标‘,通用的目标检测的方法也适用于文本检测,从任务本身上来 看: • 目标检测:给定图像或者视频,找出目…

什么是SQL注入?基于实例讲解

一、SQL注入的含义: SQL注入是一种常见的网络攻击,由于程序对输入数据的判断或者检验不严格,导致攻击者查询到了授权范围之外的数据,甚至还可以修改数据库中的数据,对数据库执行一些管理操作等,所以它的危…