mysql的主从复制-基于GTID的异步主从复制

在上一篇博客中,我写了异步主从复制,这篇博客中,我将表述基于GTID的异步主从复制,分析两者有何区别,GTID又有什么优点

官方对于GTID的解释翻译:

全局事务标识符(GTID)进行基于事务的复制。当使用GTID时,每个事务都可以被识别和跟踪,因为它是在原始服务器上提交的,并且由任何从属服务器应用的;这意味着在启动新的从属服务器或故障转移到新的主服务器时,使用GTID引用这些文件中的日志文件或位置是不必要的,这大大简化了这些任务。因为基于GTID的复制完全基于事务,所以很容易确定主服务器和从服务器是否一致;只要在主服务器上提交的所有事务也在从服务器上提交,就可以保证两者之间的一致性。

推荐一个链接,里面讲解的原理,结构图很清晰

https://yq.aliyun.com/articles/57731

这里,我先做实验,做完实验再简单说一下原理,上面的链接可以在看完本篇博客之后去看,不推荐一开始就看

实验环境:rhel7.3

master  172.25.15.1  (server1)

slave 172.25.15.2 (server2)

数据库版本:mysql5.7

压缩包下载地址:http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.7/

在上一篇博客的基础上,查看主从复制是否成功

可以看到,slave_IO和SQL都运行正常

首先,master和slave编辑mysql配置文件,加入gtid模块

vim /etc/my.cnf

编辑内容如下:

重启mysql服务

systemctl restart mysqld

slave登录数据库,停止slave

[root@server2 ~]# mysql -p
  mysql> stop slave;

告诉从机主机的IP,用户,密码,以及设置master_auto_position=1

这就是与上一篇的不同之处,可以这么理解,GTID会自动告诉slave主机的二进制日志文件以及position号,这些都是自动的。

mysql> change master to master_host='172.25.15.1',master_user='repl',master_password='Yakexi+007',master_auto_position=1;

开启slave

mysql> start slave;

查看slave状态

mysql> show slave status\G

测试同上一篇博客测试

也可以通过select * from gtid_executed;来查看一些参数

猜你喜欢

转载自blog.csdn.net/lm236236/article/details/87916243