基于gtid的mysql复制(源码包mysql5.7)

实验一:一主(196)一从(101)
条件:做备份使主从数据相同
主:mysqldump备份
从:重定向导入备份
master配置文件修改
[root@master ~]# vim /etc/my.cnf
log_bin=/backup/master
server_id=1
gtid_mode=ON
enforce_gtid_consistency=1
master对slave授权

[root@master ~]# mysql
mysql> grant slave replication slave on *.* to 'slave'@'192.168.122.101' identified by '123';
查看:
mysql> SELECT USER,host,authentication_string from mysql.user;

slave进行登陆测试(略)
slave配置文件修改
[root@slave ~]# vim /etc/my.cnf
log_bin=/backup/master
server_id=2
gtid_mode=ON
enforce_gtid_consistency=true //也可为1
#以下两条为可选项,指用户,密码等连接信息会以表的方式存储,多用于配置多主多从或者一主多从时
master—info-repository=TABLE
relay-log-info-repository=TABLE
重启服务
做主从同步部署

[root@slave ~]# mysql -uroot -p'123'
mysql> change master to
-> master_host='192.168.122.196',
-> master_user='slave',
-> master_password='123',
-> master_auto_position=1;      //让两台服务器自动交换GTID信息,无需指定日志文件和位置
1 row in set (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
//io和sql 线程都为yes即可

可能错误:
在这里插入图片描述

原因1:防火墙
原因二:因为做主从同步时没有停掉主的服务,主库里已经又有了很多新数据,从库无法跟上,解决方法:
slave端stop slave;
master端reset master; (清除二进制日志)
slave端start slave;
实验二:基于实验一上的双主
做完主从做主主时,此时slave和master完全同步,要达到主主,应该用主给主授权(因为已经同步,所以相同当于从给主授权),因为此时从和主完全同步且从不能输入数据,无论做主主还是多主多从,永远在最开始的主授权。
master端给自己的ip授权:
[root@master ~]# mysql -uroot -p’123’
mysql> grant replication slave on . to ‘slave’@‘192.168.122.196’ identified by ‘123’;
master端配置主从同步
[root@master ~]# mysql -uroot -p
mysql> change master to
-> master_host=‘192.168.122.101’,
-> master_user=‘slave’,
-> master_password=‘123’,
-> master_auto_position=1;
1 row in set (0.00 sec)
mysql> start slave;
mysql> show slave status\G

猜你喜欢

转载自blog.csdn.net/weixin_42275939/article/details/82894879
今日推荐