当前位置:   article > 正文

Mysql---Gtid--主从复制_mysql的gtid做主从

mysql的gtid做主从

GTID

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

由于同一事务的GTID在所有节点上的值一致
我们都不需要知道GTID的具体值
'前提:需要做好前面的binlog复制'
在传统的复制里面,当发生故障,需要主从切换,需要找到binlog和pos点,然后将主节点指向新的主节点,相对来说比较麻烦,也容易出错。在MySQL 5.6里面,不用再找binlog和pos点,我们只需要知道主节点的ip,端口,以及账号密码就行,因为复制是自动的,MySQL会通过内部机制GTID自动找点同步

1:从服务器连接到主服务器之后,把自己执行过的GTID(Executed_Gtid_Set)<SQL线程> 、
  获取到的GTID(Retrieved_Gtid_Set)<IO线程>发给主服务器,主服务器把从服务器缺少的GTID及对应的transactions发过去补全即可。
2:当主服务器挂掉的时候,找出同步最成功的那台从服务器,直接把它提升为主即可。
  如果硬要指定某一台不是最新的从服务器提升为主, 先change到同步最成功的那台从服务器,
  等把GTID全部补全了,就可以把它提升为主了
  show variables like 'log_%'; #查看二进制日志
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

【1】【server1】上添加配置

1)

vim /etc/my.cnf		##在文件最后添加

gtid_mode=ON
enforce-gtid-consistency=true
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

2) mysql -uroot -pWestos+001

mysql> use mysql;
mysql> select * from gtid_executed;	##是空的,因为还没重启  ##在slave上面看
Empty set (0.00 sec)
mysql> show master status;

cd /var/lib/mysql ---- ls
root@server1 mysql]# mysqlbinlog mysql-bin.000004	##可以看到之前做的操作都在里面
[root@server1 mysql]# cat auto.cnf 	##看到server1的uuid
systemctl restart mysqld
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

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

【2】在server2上配置 (mysql5.6 slave必须开启binlog日志 但是5.7中不是必须的)

1)
vim /etc/my.cnf
gtid_mode=ON(必选)
enforce-gtid-consistency=true(必选)
log_bin=ON(可选)--高可用切换,最好设置ON
log-slave-updates=ON(可选)--高可用切换,最好设置ON

systemctl restart mysqld	##重启
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

2)
在server2上查看主从复制状态是否正常
[root@server2 ~]#  cd /var/lib/mysql
[root@server2 mysql]# cat relay-log.info  ##查看relay-log

登陆:mysql -uroot -pWestos+001
mysql> stop slave;	##先停止复制
mysql> CHANGE MASTER TO		##修改master信息
    -> MASTER_HOST = '172.25.78.1',
    -> MASTER_USER = 'repl',
    -> MASTER_PASSWORD = 'Westos+001',
    -> MASTER_AUTO_POSITION = 1;	##启用gtid,它是自动的

mysql> start slave;

mysql> show slave status\G	##查看状态,可以看到下面两个参数是空的
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【server1】
##在server1上插入数据

mysql> use westos;
mysql> insert into usertb values ('user2','222');
Query OK, 1 row affected (0.01 sec)

mysql> insert into usertb values ('user3','333');
Query OK, 1 row affected (0.00 sec)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
【server2】
在server2上查看状态

mysql> show slave status\G  ##发现这两个参数变了,从1位置开始复制的
 Retrieved_Gtid_Set:  d5b7753c-f754-11e9-93f9-525400daa8b8:1-2
 Executed_Gtid_Set:   d5b7753c-f754-11e9-93f9-525400daa8b8:1-2	
mysql> use westos;
mysql> select * from usertb;  ##查看插入的数据
mysql> use mysql
mysql> select * from gtid_executed;  ##再查看gtid模式复制的起始和结束位置
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/959335
推荐阅读
相关标签
  

闽ICP备14008679号