实验基于
MySQL 5.6.x(5.6.30)
ps. MySQL 5.7开启GTID更方便
master: 192.168.1.186
slave: 192.168.1.187
〇 同步两个mysql实例的数据
先在master和slave上执行
- SET @@global.read_only=ON;
然后通过mysqldump、xtrabackup等工具备份master数据,并且恢复到slave上。
因为开启了read_only恢复可能需要具有super权限的用户。
〇 关闭两个mysqld
〇 修改配置文件,并以GTID方式启动:
master和slave配置文件都需要改
配置文件[mysqld]里至少需要添加:
- log-bin
- relay-log = relay-log
- log-slave-updates
- gtid_mode = ON # 5.6为静态参数,5.7.6以后为动态参数
- enforce-gtid-consistency = ON # 5.6中为布尔类型,5.7.6以后为枚举类型,多了两个选项
另外要保证master和slave的server_id不一致
(在5.7中,slave也可以不需要开启binlog便可以启动GTID了,存放在mysql.gtid_executed中)
〇 建立连接
在master上创建replication用户:
- GRANT replication slave ON *.* to repl@'192.168.1.187' IDENTIFIED BY 'repl@pwd';
- FLUSH PRIVILEGES;
并且在slave上执行:
- CHANGE MASTER TO
- MASTER_HOST = '192.168.1.186',
- MASTER_PORT = 3306,
- MASTER_USER = 'repl',
- MASTER_PASSWORD = 'repl@pwd',
- MASTER_AUTO_POSITION = 1;
- START SLAVE;
〇 在master上关闭read_only
- SET @@global.read_only=OFF;
〇 参考文档:
MySQL 5.6 Reference Manual - Chapter 17 Replication - 17.1.3.2 Setting Up Replication Using GTIDs
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/142385.htm