以下是普通的主从复制搭建过程,暂不包含5.7以来的新技术。 首先是修改主从的my.cnf,使mysql以该参数文件运行。主my.cnf
[mysqld] server-id = 100 log-bin=mysql-bin binlog_format=row
从my.cnf
[mysqld] server-id = 101 log-bin=mysql-bin binlog_format=row master_info_repository=TABLE relay_log_info_repository=TABLE log_slave_updates=on relay_log_recovery=on
然后在主库创建用于slave连接的账户:
mysql> grant replication slave on *.* to 'mysync'@'%' identified by 'q123456'; Query OK, 0 rows affected, 1 warning (0.05 sec) mysql> flush privileges; Query OK, 0 rows affected (0.07 sec)
接下来,初始化从库。这里用xtrabackup备份主库到从库,并记下binlog位置:
# cat xtrabackup_binlog_info mysql-bin.000003 591
在从库执行:
mysql> change master to master_host='192.168.252.3', master_user='mysync', master_password='q123456', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos=591, master_auto_position=0;
mysql> start slave;
到此全部完成配置。若要测试效果可在主库制造一些变更然后在从库查看效果。 查看slave状态
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.252.3 Master_User: mysync Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 1275 Relay_Log_File: mysql2-relay-bin.000002 Relay_Log_Pos: 1004 Relay_Master_Log_File: mysql-bin.000003 Slave_IO_Running: Yes Slave_SQL_Running: Yes
重点看最后两行必须是Yes。 经测试,重启从库后,相关slave线程自动开启,无需人为操作。
