MySQL 主-主双向同步 测试报告 一、测试环境 服务器 1(Master1): IP 地址:192.168.0.20,操作系统:Windows XP SP3,MySQL 版本:5.5.11 服务器 2(Master2): IP 地址:192.168.0.252,操作系统:Windows XP SP3,MySQL 版本:5.5.11 前提条件:服务器 1 和服务器 2 中 MySQL 数据库的个数、名称,数据表的个数、名称、结果强烈建议一致,并且 MySQL 的版本保证一致,且在 5.0 以上。 Linux系统下配置方法与 Windows 系统相同,只是需要注意配置文件为 my.cnf,且配置文件中一定要注意将 bind-address=127.0.0.1 注释,否则,远程无法登录 MySQL 数据库,更谈不上同步。 二、同步原理 两台数据库服务器既为主服务器,亦为从服务器。某一时刻只允许某台服务器进行数据更新操作,另外一台服务器同步数据。 换言之,两台服务器互为对方的主服务器,亦互为对方的从服务器。 主服务器用于数据更新或者(和)查询操作,从服务器用于数据同步和查询操作。 三、服务器配置 1)在服务器 1 上为服务器 2 授权同步账户 执行 SQL 指令: mysql> GRANT REPLICATION SLAVE ON *.* TO ‘SlaveRepl1’@’192.168.0.252’ IDENTIFIED BY ‘123456’; mysql> FLUSH PRIVILEGES; 图 1 为服务器 2 授权同步账户 2)在服务器 2 上为服务器 1 授权同步账户 执行 SQL 指令: mysql> GRANT REPLICATION SLAVE ON *.* TO ‘SlaveRepl2’@’192.168.0.20’ IDENTIFIED BY ‘123456’; mysql> FLUSH PRIVILEGES; 图 2 为服务器 1 授权同步账户 3)停止服务器 1 和服务器 2 上 MySQL 数据库服务 4)修改服务器 1 和服务器 2 的配置文件 my.ini(Linux下为 my.cnf) A)服务器 1 [mysqld] log-bin = mysql-bin #记录二进制日志文件 server-id = 1 #服务器 ID 标识,每台服务器必须唯一 binlog-ignore-db = mysql #通知主服务器忽略记录二进制日志的数据库 replicate-ignore-db = mysql #通知从服务器忽略同步复制的数据库 log-slave-updates #通知从服务器将更新记录二进制日志文件 sync_binlog = 1 #保证事务 InnoDB 复制设置的 innodb_flush_log_at_trx_commit = 1#最大可能的耐受性和一致性 auto_increment_increment = 2 #控制自增列列值增加的间隔 auto_increment_offset = 1 #控制自增列列值的起点 log-wa...