MySQL配置:
- 开启binlog:log_bin=/mysql/binlog/mysql-bin
- 开启gtid:gtid_mode=ON
MySQL 5.6 版本引入GTID之后,传统的基于binlog file + position方式的复制已经很少使用,这里不再介绍这种file+position方式的主从复制搭建。
一、创建复制账号
在主、从节点上分别创建复制账号。
set sql_log_bin=0;
create user repl@\’%\’ identified by \’password\’;
grant replication slave on *.* to \’repl\’@\’%\’;
set sql_log_bin=1;
二、空库搭建主从复制
(1)依次在主、从库执行reset master;
(2)在从库执行:
change master to master_host=\’主库ip\’, master_port=3306,master_user=\’repl\’,master_password=\’password\’,master_auto_position=1;
start slave;
三、非空库搭建主从复制
(1)使用xtrabackup或者mysqldump获取主库的备份,同时得到一致性备份点gtid,比如:
7fd59ca1-ef4c-11e7-bdad-fa163e1c09f1:1-36530977
(2)使用备份恢复到从库。
(3)启动从库,在从库执行:
reset master;
set global gtid_purged=\’7fd59ca1-ef4c-11e7-bdad-fa163e1c09f1:1-36530977\’;
change master to master_host=\’主库ip\’, master_port=3306,master_user=\’repl\’,master_password=\’password\’,master_auto_position=1;
start slave;
四、检查主从复制是否成功
在从库执行:
show slave statusG
观察以下两个字段是否为Yes:
Slave_IO_Running
Slave_SQL_Running
如果都为Yes,说明主从复制正常,否则主从复制有问题,需要进一步排查问题。
五、常见的主从复制问题
- 主从网络不通,可以通过主从机器相互ping,来确认网络是否正常。
- 端口是否可以访问,可以通过telnet ip 3306,来确认3306端口是否正常。
- 复制账号用户名密码、授权是否正常。可以通过在从库上使用复制账号连接主库,来检测复制账号、授权是否正常。
- 主从数据冲突,导致主从复制报错。使用备份工具在主库做一次最新的备份,使用该备份重新搭建主从复制即可。
- 主库binlog已被清除,导致主从复制报错。同样使用备份工具在主库做一次最新的备份,使用该备份重新搭建主从复制即可。
