- GTID简介
GTID=global transaction identifier全局事务标识符
GTID:全局事务标识符,使用这个功能时,每次事务提交都会在binlog里生成一个唯一的标识符,它由UUID和TID(transactionId)组成。uuid是mysql实例的一个标识,tid则代表了该实例上交的事务数量,并且随着事务的提交单调递增。
GTID是以一整个事件为单位进行复制的,是一个已提交事务的编号。只需要知道master的IP、端口、账号、密码,change master to master_auto_postion=1。无需找到binlog(MASTER_LOG_FILE)和POS(MASTER_LOG_POS)点
在初始化MySQL时,会自动生成一个server-id并写到数据目录的auto.cnf(cat /var/lib/mysql/auto.cnf)文件中。
server1:master
cd /var/lib/mysql
mysqlbinlog mysql-bin.000002
cd /var/lib/mysql
cat auto.cnf 查看节点的uuid
vim /etc/my.cnf 在异步复制实验的基础上,修改配置文件
gtid_mode=ON 开启gtid的信息
enforce-gtid-consistency=ON
systemctl restart mysqld
server2:
vim /etc/my.cnf
gtid_mode=ON
enforce-gtid-consistency=ON
systemctl restart mysqld
cat relay-log.info
mysql -uroot -pRedhat_123
show slave status\G 查看两个线程的状态
stop slave; 先停止slave
change master to 更改master策略
-> master_host='172.25.29.11',
-> master_user='repl',
-> master_password='Redhat_123',
-> master_auto_position=1; 从第一个事物开始复制
start slave; 再次开启
show slave status\G 查看两个线程的状态,Auto_Position: 1
server1:主节点操作:插入数据
mysql -uroot -pRedhat_123
use westos;
insert into usertb values('user2','123');
insert into usertb values('user3','123');
use mysql;
show tables;
select * from gtid_executed; 查看执行事物信息,此时是空的
server2:查看数据库中的数据是否已同步
select * from westos.usertb;
use mysql
select * from gtid_executed;查看执行的事务
show slave status\G
Retrieved_Gtid_Set: 接收到的事物
Executed_Gtid_Set: 执行的事物
基于gtid的mysql主从异步复制已实现