Mysql 配置互为主从同步

A Server 1.1.1.1 (拥有完整数据)
B Server 2.2.2.2

修改my.cnf [mysqld] 下面增加项目:

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=2
auto_increment_offset=1
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 status\G 检查是否同步成功。

发表回复