A B 为两台 MySQL 服务器,均开启二进制日志,数据库版本 MySQL 5.5
一、服务器参数
[A 服务器 192.168.1.100]
server-id = 1
binlog-do-db = test
binlog-ignore-db = mysql
replicate-do-db = test
replicate-ignore-db = mysql
sync-binlog = 1
[B 服务器 192.168.1.101]
server-id = 2
binlog-do-db = test
binlog-ignore-db = mysql
replicate-do-db = test
replicate-ignore-db = mysql
sync-binlog = 1
重启A、B的数据库服务器
二、操作步骤# A B 服务器停止同步
STOP SLAVE;
# A B 服务器清空MASTER日志
RESET MASTER;
# A B 服务器清空SLAVE日志
RESET SLAVE;
# A 服务器授权同步账户 (我们会同步一次复制数据库文件,所以授权为192.168.1%)
GRANT REPLICATION SLAVE ON *.* TO 'master_slave'@'192.168.1%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
# A 服务器锁表(锁表状态下不能终止mysql进程,否则会失败)
FLUSH TABLES WITH READ LOCK;(当线上正在运行数据库时,进行锁表操作,数据不在写入)
# 如果使用SSH,需要重新开启,复制数据库文件。
tar -cvf /tmp/mysql-data.tar /www/mysql
tar -xvf /tmp/mysql-data.tar -C /
# 查看 A 服务器主机状态(记录二进制开始文件,位置)
SHOW MASTER STATUS;
# B 服务器锁表(锁表状态下不能终止mysql进程,否则会失败)
FLUSH TABLES WITH READ LOCK;
# 修改 B 服务器配置 (修改为A服务器的主机状态)
CHANGE MASTER TO MASTER_HOST='192.168.1.100',MASTER_USER='master_slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=106;
MASTER_LOG_FILE 对应A 服务器show master status中的File;MASTER_LOG_POS对应A 服务器show master status中的Position
上图箭头所指的两个参数如果都为yes,就代表同步成功。
# 开启 B 服务器同步进程
START SLAVE;# 查看 B 服务器同步状态是否正常
SHOW SLAVE STATUS;