A Server 1.1.1.1 (拥有完整数据) B Server 2.2.2.2
A服务器如下:
log-bin=mysql-bin
server-id= 1
binlog-do-db=database // 修改为需要同步的数据库名称
replicate-do-db=database // 修改为需要同步的数据库名称
log-slave-updates
slave-skip-errors= 1062,1060,1032
auto_increment_increment=1
auto_increment_offset=2
relay-log=mysqld-relay-bin
B服务器如下:
log-bin=mysql-bin
server-id= 2
binlog-do-db=database // 修改为需要同步的数据库名称
replicate-do-db=database // 修改为需要同步的数据库名称
log-slave-updates
slave-skip-errors= 1062,1060,1032
auto_increment_increment=2
auto_increment_offset=2
relay-log=mysqld-relay-bin
分别在AB服务器创建同步用户shadow , 密码shadowpass
use mysql
grant replication slave on *.* to 'shadow'@'%' identified by 'shadowpass';
flush privileges;
use数据库后锁定A服务器数据库
FLUSH TABLES WITH READ LOCK;
备份A服务器数据库 mysqldump 为sql文件。
导入sql文件备份到B服务器。
在AB两台服务器上分别重置master和slave
reset master;
reset slave;
检查AB服务器上master_log_pos,应该都为79,如果不是根据实际值修改。mysql-bin.000001也根据实际情况修改。
mysql
show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 79 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
在A服务器上执行:
change master to master_host='2.2.2.2',master_user='shadow',master_password='shadowpass',master_log_file='mysql-bin.000001',master_log_pos=79;
在B服务器上执行:
change master to master_host='1.1.1.1',master_user='shadow',master_password='shadowpass',master_log_file='mysql-bin.000001',master_log_pos=79;
分别解锁2台服务器数据库并且启动slave
UNLOCK TABLES;
start slave;
配置完成,show slave statusG 检查是否同步成功。