Mysql 主从同步配置

󰃭 2016-07-28

环境准备

  • Master 服务器:192.168.0.1
  • slave 服务器:192.168.0.2

master 主服务器修改

1. 修改 master 服务器配置 /etc/my.cnf

[Mysqld]
server-id		= 1

log-bin			= mysql-bin  # 打开二进制日志

binlog-do-db 	= db1  # 要同步的库

2. 创建同步账户,用于 slave 同步

mysql>GRANT REPLICATION SLAVE,FILE ON *.* TO replication@192.168.0.2 IDENTIFIED BY '1234';
mysql>FLUSH PRIVILEGES;

slave 从服务器修改

修改 slave 服务器配置 /etc/my.cnf

[Mysqld]
server-id =2  # master 与 slave 的 server-id 一定不能相同

log-slave-update  # 从主机同步的数据记录到日志,这样 slave 才能作为另一台 slave 的 master,构成 A > B > C 同步 

从 master 导出数据到 slave

1. 从 master 导出数据库

mysqldump -uroot -p --lock-tables --events --triggers --routines --flush-logs --master-data=2 --databases db1 > db1.sql

–master-data 参数记录导出快照时 master 的二进制日志位置,同步开始时会用到

2. 导入数据到 slave

mysql -uroot -p -h 192.168.0.2 db1 < db1.sql

从服务器设置同步点,开始同步

1. 获取同步点

grep -i "change master" db1.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=203;

2. 开始同步

mysql>stop slave; 

mysql>CHANGE MASTER TO MASTER_HOST='192.168.0,1',MASTER_USER='replication', MASTER_PASSWORD='1234',MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=203;

mysql>start slave;

3. 登录 slave 服务器,检查同步是否成功

mysql> show slave status;

Slave_IO_Running 和 Slave_SQL_Running 的状态都为Yes,同步成功