MySQL双向同步_MySQL
服务器A:192.168.1.1
服务器B:192.168.1.2
2.创建同步用户
主机域A:192.168.1.2 用户名A:sync_a 密码A:aaa
主机域B:192.168.1.1 用户名B:sync_b 密码B:bbb
至少分配以下权限grant replication slave
3.执行flush privileges
4.停止MySQL
5.配置my.cnf(my.ini)
服务器A | 服务器B |
user = mysql log-bin = mysql-bin server-id = 1 binlog-do-db = test binlog-ignore-db = mysql replicate-do-db = test replicate-ignore-db = mysql log-slave-updates slave-skip-errors = all sync_binlog = 1 |
user = mysql log-bin = mysql-bin server-id = 2 binlog-do-db = test binlog-ignore-db = mysql replicate-do-db = test replicate-ignore-db = mysql log-slave-updates slave-skip-errors = all sync_binlog = 1 |
server-id必须唯一
binlog-do-db和replicate-do-db表示需要同步的数据库
binlog-ignore-db和replicate-ignore-db表示不需要同步的数据库
请不要加入以下命令,该命令并不会解决uid跳号的问题,恰恰相反以下两行命令才是导致uid跳号的罪魁祸首
auto_increment_increment = 2
auto_increment_offset = 1
6.重新启动MySQL
7.进入MySQL控制台
服务器A:
show master status /G
flush tables with read lock;
服务器B:
show master status /G
flush tables with read lock;
同时记录下两台服务器的File和Position,此处假设:
A: File: mysql-bin.000001
Position: 001
B: File: mysql-bin.000002
Position: 002
服务器A:
change master to
-> master_host='192.168.1.2',
-> master_user='sync_b',
-> master_password='bbb',
-> master_log_file='mysql-bin.000002',
-> master_log_pos=002;
服务器B:
change master to
-> master_host='192.168.1.1',
-> master_user='sync_a',
-> master_password='aaa',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=001;
此处填写的数据完全相反
8.执行show processlist /G查看是否同步成功
上一篇: 针对linux服务端乱码终极有效解决方案
下一篇: javascript - 来个问题:在编辑页面中,我把数据库中原有的内容填充到页面上,然后用户会修改并且提交给我,我要怎么判断这些数据是否被改动过?
推荐阅读