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,同步成功