赞
踩
基于GTID的复制是从MySQL5.6开始支持的一种新的复制方式,此方式与传统基于binlog日志的方式存在很大的差异,在原来的基于日志的复制中,slave从服务器连接到 master,主服务器并告诉主服务器要从哪个二进制日志的偏移量开始执行增量同步,这时我们如果指定的日志偏移量不对,这 与可能造成主从数据的不一致,而基于GTID的复制会避免。
在基于GTID的复制中,首先从服务器会告诉主服务器已经 在从服务器执行完了哪些事务的 GTID 值,然后主库会有把
所有没有在从库上执行的事务,发送到从库上进行执行,并 且使用 GTID 的复制可以保证同一个事务只在指定的从库上
执行一次,这样可以避免由于偏移量的问题造成数据不一致。
GTID格式=source_id:transaction_id
source_id就是执行事务的主库的server‐uuid值server‐uuid值是在mysql服务首次启动生成的保存在数据 库的数据目录中,在数据目录中有一个auto.conf文件
查看UUID:
mysql> show variables like '%uuid%';
事务ID则是从1开始自增的序列,表示这个事务是在主库上执行的第几个事务。
[root@mysql01 ~]# vi /etc/my.cnf
character_set_server=utf8
server-id=101
log-bin=mysql-bin
gtid_mode=on
enforce_gtid_consistency=on
mysql> grant replication slave,replication client on *.* to 'gtid'@'%' identified by '000000';
mysql> flush privileges;
##查看主库状态
mysql> show master status;
+------------------+----------+--------------+------------------+------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+------------------------------------------+
| mysql-bin.000002 | 609 | | | f1ec3e3f-51f3-11ea-9628-005056285bae:1-2 |
+------------------+----------+--------------+------------------+------------------------------------------+
1 row in set (0.00 sec)
开启gtid
[root@mysql02 /]# vi /etc/my.cnf
character_set_server=utf8
server-id=102
gtid_mode=on
enforce_gtid_consistency=on
CHANGE MASTER TO
MASTER_HOST='192.168.17.131',
MASTER_USER='gtid',
MASTER_PASSWORD='000000',
MASTER_AUTO_POSITION=1; # 自动同步不用关心日志的位置
mysql> start slave;
mysql> show slave status\G;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。