引言
为了保证MySQL的高可用性,避免MySQL服务挂掉导致更严重的生产事故,因此需要保证多台机器数据均一致,并且降低恢复成本,采用GTID双主服务。实际上GTID也是以来binlog来实现的。
测试机器
- centos8
- mysql 8.0.20
配置过程
分别配置双机的my.cnf
server-id=129 -- 注意这个地方需要保证不一致,我这里是ip地址的后部分
gtid-mode=on
enforce-gtid-consistency=on
log-slave-updates=on
log-bin-index=mysql-bin.index
log_bin=mysql-bin
binlog-format=mixed
如果需要排除部分库,可添加配置
replicate_ignore_db = db1
replicate_ignore_db = db2
replicate_ignore_db = db3
其中db1,db2为库名
修改auto.cnf
切换到data目录,这里可以在my.cnf中找到

切换到data目录 /home/mysql/data
修改auto.cnf文件内容,这里保证两台机器的uuid不一致
vi auto.cnf
vi 快捷键
i编辑
上下左右光标
若要保存,先esc键,输入:wq

重启MySQL服务
因为修改了MySQL的配置,需要重启一下MySQL服务,如果提示错误,看日志,如果不是配置文件的问题,考虑一下是不是selinux,通过 setenforce 0暂时关闭selinux

创建 syncer账号
这里仅提供样例,用户名和密码需自行设置
CREATE USER 'syncer'@'%' IDENTIFIED WITH mysql_native_password BY 'P@ssw0rd';
GRANT REPLICATION SLAVE ON *.* TO 'syncer'@'%';
flush privileges;
启动slave服务
⚠ 注意,这里的IP,用户名、密码、端口,需要以实际情况进行设置
第一台服务
change master to
MASTER_HOST='192.168.204.132',
MASTER_USER='syncer',
MASTER_PASSWORD='P@ssw0rd',
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;
第二台服务
change master to
MASTER_HOST='192.168.204.129',
MASTER_USER='syncer',
MASTER_PASSWORD='P@ssw0rd',
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;
分别在两台机器上执行start slave;启动同步服务
检查服务状态
show slave status\G

当框框里面的都是YES即为设置成功。
验证
左侧添加,右侧自动添加
右侧添加,左侧自动添加

左侧删除,右侧自动删除
右侧删除,左侧自动删除

模拟数据库服务A挂掉,在B服务器上操作,当A再次上线,回复B上的操作

备注
备份数据库
mysqldump -uroot -p --set-gtid-purged=ON –databases db1 db2 db3 --single-transaction --master-data=2 --triggers --routines --events > database.sql
清除slave配置
reset slave all;
清除binlog
reset master;
重启slave
stop slave;
start slave;
show slave status\G
备忘录
测试时执行的命令,此处并非文章内容,仅供高效率执行。(C)
登录后可见
这段内容需要登录后才能查看。

评论 0
还没有评论,来说点什么吧。