基于MySQL GTID搭建主从

什么是MySQL GTID ?

MySQL GTID(Global Transaction Identifier)是MySQL
5.6版本引入的一种全局事务标识符,用于唯一标识一个事务,并确保事务在主从复制中的一致性。

原理

GTID的原理是通过在主库上为每个事务分配一个全局唯一的标识符。每个GTID由以下三个部分组成:源服务器的唯一标识符(server_uuid)、事务序号(transaction_id),以及集群名称(gtid_domain_id)。这个标识符会随着事务的提交被写入二进制日志,并被主库和从库的服务器记录和追踪。

GTID的作用:

主从切换:使用GTID可以简化主从切换的过程,从库可以通过GTID自动找到上一次复制的位置,从而无需手动指定二进制日志文件和偏移量。

数据一致性:GTID保证了主从复制的数据一致性。主库上的每个事务都被唯一标识,从库会根据GTID进行复制,避免了重复复制或跳过复制的情况。

简化拓扑:使用GTID,可以更轻松地改变主从复制的拓扑结构,比如添加或移除从库,而无需重新设置复制位置。

搭建过程

1,准备两台虚拟机,自行规划谁是主,谁是从,并安装mysql (此处省略)
在这里插入图片描述
2,在主库创建一个同步账户授权给从数据库使用

grant replication slave on *.* to 'sync'@'%' identified by 'HGHnice_666';
flush privileges;

3,修改主库my.cnf配置文件

[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-name-resolve
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
skip-name-resolve

log-bin=mysql-bin                        #开启二进制日志
server-id=11                                 #服务器ID,必须唯一
gtid-mode=on                              #开启gtid模式
enforce-gtid-consistency=on       #强制gtid一致性,开启后对特定的create table不支持
binlog-format=row                       #默认为mixed混合模式,更改成row复制,为了数据一致性
log-slave-updates=1                    #从库binlog记录主库同步的操作日志
skip-slave-start=1                        #跳过slave复制线程
binlog-ignore-db=mysql
#lower_case_table_names=1

4,重启主库的mysql

systemctl restart mysqld

5,查看主库gtid开启状态

mysql> show variables like "%GTID%";

在这里插入图片描述
6,配置从库的my.cnf文件

[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
skip-name-resolve

log-bin=mysql-bin #启用二进制日志,将日志文件保存为 mysql-bin
server-id=12
gtid-mode=on  #开启gtid
enforce-gtid-consistency=on #强制要求在复制过程中严格遵守GTID的一致性,确保数据一致性。     
binlog-format=row #设置二进制日志的格式为行级别的格式,以记录每个事务中具体执行的行变更。
log-slave-updates=1 #允许从服务器将接收到的更新事务写入自身的二进制日志文件,用于级联复制中的中继服务器。
skip-slave-start=1
#lower_case_table_names=1

7,重启从库的mysql

systemctl restart mysqld

8,查看gtid的状态

mysql> show variables like "%GTID%";

在这里插入图片描述
9,开启主从同步(下面的命令是在从库上执行)

mysql> stop slave;


mysql> change master to
     master_host='192.168.10.201',
     master_user='sync',
     master_password='HGHnice_666',
     master_auto_position=1;
mysql> start slave;  
使用GTID方式同步的时候,必须指定master_auto_position=1
GTID使用master_auto_position=1代替了基于binlog和position号的主从同步方式,更便于主从同步的搭建
mysql> show slave status\G

在这里插入图片描述
看见两个yes,则表示搭建成功(如果显示为no,确保命令是在从库执行,并且配置了防火墙规则,或者之间关闭防火墙)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值