linux--mysql(主从复制gtid)

本文介绍了在已配置过position基础上,如何使用GTID进行MySQL主从复制。GTID复制无需指定binlog和POS点,只需master的连接信息,自动寻址同步。与基于position的传统复制不同,GTID以事件为单位复制,并通过change master to master_auto_position=1实现自动同步。在实际操作中,分别展示了在server1和server2上的配置和测试步骤。
摘要由CSDN通过智能技术生成

gtid主从复制(在已经做过position的基础上)

position与gtid是一体
GTID复制不像传统的复制方式(异步复制、半同步复制)需要找到binlog(MASTER_LOG_FILE)和POS点(MASTER_LOG_POS)
只需要知道master的IP、端口、账号、密码即可,因为复制是自动的,MySQL会通过内部机制GTID自动找点同步
和基于position的主从复制的不同之处在于:它是以一整个事件为单位进行复制的

server-id:服务器身份id,在初始化MySQL时,会自动生成一个server-id并写到数据目录的auto.cnf文件中,官方不建议修改,并且server-id跟GTID有密切关系,
并且对于任意一个数据库节点,server-id是唯一的
GTID:全局事务标识符,使用这个功能时,内次事务提交都会在binlog里生成一个唯一的标识符,它由UUID和事务ID组成,首次提交的事务为1,第二次为2,第三次为3,以此类推

开启GTID,无需找到binlog和POS点,直接change master to master_auto_postion=1即可,它会自动寻找同步

在master上一个事务提交,并写入binlog里。
binlog日志发送到slave,slave接收并写入中继日志里,slave读取到这个GTID,并设置gtid_next的值。例如
set @@session。gtid_next=’=fbd841f9-5590-11e8-b819-000c29e6461e’;
然后告诉slave接下来的事务必须使用GTID,并写入它自己的binlog里。
slave检查并确认这个GTID没有被使用,如果没有被使用,那么开始执行这个事务并写入自己的binlog里
由于gtid_next的值不为空,slave不会尝试去生成一个新的gtid而是通过主从同步来获取GTID

在server1上:

vim /etc/my.cnf

加入:开启gtid的信息
gtid_mode=ON
enforce-gtid-consistency=true

在这里插入图片描述

systemctl restart mysqld
use mysql;
select * from gtid_executed;发现是空的

在这里插入图片描述

cd /var/lib/mysql
mysqlbinlog mysql-bin.000002可以看出完成一个事件需要很多步

在这里插入图片描述

在server2上:

vim /etc/my.cnf

在这里插入图片描述

systemctl restart mysqld
mysql -uroot -pAPLOX111fox.
show databases;
stop slave;
change master to master_host='172.25.254.1',master_user='repl',master_password='APLOX111fox.',master_auto_position=1;
从第一件事情开始跟踪
start slave;
show slave status\G;

在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述
测试:

在server1上写入数据

在这里插入图片描述
在这里插入图片描述
在server2上检查:

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

server1:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值