分类: Mysql/postgreSQL
2012-12-28 11:48:24
mysql实现两台服务器双向备份(window系统)
假设有两台服务器A和B,IP地址如下:
192.168.10.122(A)
192.168.10.123(B)
先保证这mysql的版本是一致的
1.在两台mysql上创建用户,设置权限,我这里用的是root用户
A上添加:
以下是代码片段: |
B上:
以下是代码片段: |
2.1修改A上的配置文件my.ini,加入以下代码:
server-id=1;
log-bin=mysql-bin;
binlog-do-db=mysql; #表示要备份的数据库
replicate-do-db=mysql #表示要同步的数据库
replay-log=mysql-relay-bin;
注意:以下这些建议在mysql控制台用命令输入,因为直接在配置文件里面加入以下内容,可能导致mysql无法启动,至于是不是不识别的原因就不知道了:
master-host = 192.168.10.123
master-user = root
master-password = root
MASTER_LOG_POS = 0
mysql控制台:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.10.123',
-> MASTER_USER='root',
-> MASTER_PASSWORD='root',
-> MASTER_LOG_POS=0;
运行SHOW MASTER STATUS,输出如下:
2.2修改B上的配置文件my.ini,加入以下代码:
server-id=2;
log-bin=mysql-bin;
binlog-do-db=mysql;
replay-log=mysql-relay-bin;
replicate-do-db=mysql
mysql> CHANGE MASTER TO MASTER_HOST='192.168.10.122',
-> MASTER_USER='root',
-> MASTER_PASSWORD='root',
-> MASTER_LOG_POS=0;
运行SHOW SLAVE STATUS\G
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.10.122
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 164
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 164
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...omitted...
Seconds_Behind_Master: 0
3. 双向同步测试
Ø 检查当在两台机器的任何一台mysql中修改数据时,另外的那台的数据是否也修改
Ø 关闭其中一台mysql的服务后,更新另一台mysql的数据,再启动已停止的那台mysql服务器,查看数据是否修改
Ø 4. 特别注意事项:
Ø 请在任何时候都不要非法关机,否则将会造成同步数据的错乱。
如果因为非法关机或其他原因导致数据已经完全错乱,请先在两台机器上停止slave服务,然后将数据正常的服务器上的数据导入到不正常的服务器上,保证两边的服务器数据一致。然后到数据正常的服务器的mysql控制台下输入:
Show master status;
获取其状态后,根据这个状态到数据不正常服务器上,通过命令
CHANGE MASTER TO Master_Log_File='mysql-bin.0000xx',Master_Log_Pos=xx;
修改其参数后,再重新启动mysql,查看其状态
同步一旦配置好后,请不要修改服务器机器名