企业级mysql数据库集群(二)----mysql的基于GTID的主从复制 + 半同步

关于GTID:
由于同一事务的GTID在所有节点上的值一致
我们都不需要知道GTID的具体值
‘前提:需要做好前面的binlog复制’
在传统的复制里面,当发生故障,需要主从切换,需要找到binlog和pos点,然后将主节点指向新的主节点,相对来说比较麻烦,也容易出错。在MySQL 5.6里面,不用再找binlog和pos点,我们只需要知道主节点的ip,端口,以及账号密码就行,因为复制是自动的,MySQL会通过内部机制GTID自动找点同步
从服务器连接到主服务器之后,把自己执行过的GTID(Executed_Gtid_Set)<SQL线程> 、获取到的GTID(Retrieved_Gtid_Set)<IO线程>发给主服务器,主服务器把从服务器缺少的GTID及对应的transactions发过去补全即可。当主服务器挂掉的时候,找出同步最成功的那台从服务器,直接把它提升为主即可。如果硬要指定某一台不是最新的从服务器提升为主, 先change到同步最成功的那台从服务器, 等把GTID全部补全了,就可以把它提升为主了.

在这里插入图片描述

一、环境准备

在之前基于position的主从复制的基础上并且已经建立新的数据库插入数据,已经修改过ip ,配置网络yum源。

二、实验过程

在server1:
1.修改配置文件

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

gtid_mode=ON
enforce-gtid-consistency=true

在这里插入图片描述

mysql> select * from gtid_executed;	##是空的,因为还没重启  ##在slave上面看

2.查看日志:

mysqlbinlog mysql-bin.000004	##可以看到之前做的操作都在里面

在这里插入图片描述
3.查看uuid:

cat auto.cnf 	##看到server1的uuid

在这里插入图片描述

在server2:
mysql5.6 slave必须开启binlog日志 但是5.7中不是必须的
1.修改配置文件:

vim /etc/my.cnf         ##在文件最后添加
gtid_mode=ON(必选)
enforce-gtid-consistency(必选)
log_bin=ON(可选)--高可用切换,最好设置ON
log-slave-updates=ON(可选)--高可用切换,最好设置ON

在这里插入图片描述
2.重启mysqld服务:

systemctl restart mysqld

在这里插入图片描述
3.检查主从复制是否正常
cat relay-log.info #查看relay-log

在这里插入图片描述
4.登陆数据库并修改master的信息:

mysql> stop slave;	##先停止复制
Query OK, 0 rows affected (0.01 sec)

mysql> CHANGE MASTER TO		##修改master信息
    -> MASTER_HOST = '172.25.68.1',
    -> MASTER_USER = 'repl',
    -> MASTER_PASSWORD = 'Westos+68',
    -> MASTER_AUTO_POSITION = 1;	##启用gtid,它是自动的

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

在server1:
在server1上插入数据

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)

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

在server2上
1.show slave status\G;

#再在server2上查看状态
           Retrieved_Gtid_Set: f84e8de1-38a2-11e9-b78c-5254009afece:1-2
            Executed_Gtid_Set: f84e8de1-38a2-11e9-b78c-5254009afece:1-2		##发现这两个参数变了,从1位置开始复制的

在这里插入图片描述
在这里插入图片描述
2.再查看gtid模式复制的起始和结束位置

mysql> use mysql
select * from gtid_executed;

+--------------------------------------+----------------+--------------+
| source_uuid                          | interval_start | interval_end |
+--------------------------------------+----------------+--------------+
| f84e8de1-38a2-11e9-b78c-5254009afece |              1 |            1 |
| f84e8de1-38a2-11e9-b78c-5254009afece |              2 |            2 |
+--------------------------------------+----------------+--------------+
2 rows in set (0.00 sec)

!在这里插入图片描述

!注意:若插入数据后在server2上的起始位置未更新
可以在server1和server2两端重启mysqld的服务,并在server2停止slave,再次开启slave,并刷新列表
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值