环境准备
- 确保MySQL版本大于5.7
- 确保防火漆关闭或开启各服务器的3306端口
MySQL配置
- 查看是否开启了GTID模式
- 若未开启在my.cnf文件最后添加,开启GTID(主)
must params
server_id = 100
enforce_gtid_consistency = on
gtid_mode = on
binlog
log_bin = mysqlbin
log_slave_updates = 1
binlog_format = row
relay log
skip_slave_start = 1
- 若未开启在my.cnf文件最后添加,开启GTID(从)
需要注意的是,若配置多台MySQL从服务器,确保server_id唯一
must params
server_id = 101
enforce_gtid_consistency = on
gtid_mode = on
binlog
log_bin = mysqlbin
binlog_format = row
master_info_repository = TABLE
relay log
relay_log_info_repository = TABLE
- 重启数据库
systemctl restart mysqld
- 再次确认一下是否开启成功
gtid_mode 被设置为on,即为开启成功
- 备份数据库
若使用的是三个数据库,数据不一样,需要进行数据的备份,导入
备份
mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases -uroot -p > all.sql
导出
mysqldump -u username -p dbname > dbname.sql
导入
mysqldump -u username -p dbname < dbname.sql
配置账号
- 主库创建账号
创建用于复制的账号
mysql> create user repl@'192.168.43.%' identified by '123456Gao!';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on . to repl@'192.168.43.%';
Query OK, 0 rows affected (0.06 sec)
- 从库进行连接
进行数据库连接
mysql> change master to master_host = '192.168.43.54',
-> master_user = 'repl',
-> master_password = '123456Gao!',
-> master_auto_position = 1
-> ;
Query OK, 0 rows affected, 2 warnings (0.07 sec)
- 配置前
- 配置后
- 开启从库复制链路
start slave;
查看状态
- show slave status\G
确保下图红框的两个内容状态为yes,
- 测试
在主库创建数据库,然后从库参看是否正确同步的该数据库
主库创建
create table test_gtid;
从库查看
show databases;
可能遇到的问题
- 测试链路
mysql -urepl -p123456Gao! -h192.168.43.54