mysql 数据同步

  数据同步问题终于解决:

转帖:A服务器: host 192.168.1.101 port 3306 B服务器: host 192.168.1.102 port 3306 1,授权用户: A服务器 mysql>grant replication slave,file on *.* to 'repl9'@'192.168.1.102' identified by '1234569'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) B服务器 mysql>grant replication slave,file on *.* to 'repl8'@'192.168.1.101' identified by '1234568'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) 2,配置文件 A服务器 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 auto_increment_increment=2 auto_increment_offset=1 master-host = 192.168.1.102 master-user = repl8 master-password = 1234568 master-port = 3306 B服务器 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 auto_increment_increment=2 auto_increment_offset = 2 master-host = 192.168.1.101 master-user = repl9 master-password = 1234569 master-port = 3306 启动服务器就ok了 -------------------------------------------------- Q: 当在另一台机器上登录MySQL时出现如下错误: ERROR 2003 (HY000): Can't connect to MySQL server on 'x.x.x.x' (111) A: 原因是MySQL考虑到安全因素,默认配置只让从本地登录 打开 /etc/mysql/my.cnf 文件,找到 bind-address = 127.0.0.1 修改为 bind-address = 0.0.0.0 重启mysql : sudo /etc/init.d/mysql restart ======================================== 101 增加,102不同步 ????????? mysql -h192.168.1.102 -urepl8 -p1234568 ok 102 增加,101 同步 mysql -h192.168.1.101 -urepl9 -p1234569 ok 比较两组的show slave status/G; 102 Slave_IO_Running: No Slave_SQL_Running: Yes Replicate_Do_DB: test Replicate_Ignore_DB: mysql sudo /etc/init.d/mysql restart sudo service mysql restart 以后就变成:lave_IO_Running: YES 出现的问题(多主自增长ID重复) 解决方法:我们只要保证两台服务器上插入的自增长数据不同就可以了如:A查奇数ID,B插偶数ID,当然如果服务器多的话,你可以定义算法,只要不同就可以了 在这里我们在A,B上加入参数,以实现奇偶插入 A:my.ini上加入参数 auto_increment_offset = 1 auto_increment_increment = 2 这样A的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了 B:my.ini上加入参数 auto_increment_offset = 2 auto_increment_increment = 2 这样B的auto_increment字段产生的数值是:2, 4, 6, 8, …等偶数ID了 可以看出,你的auto_increment字段在不同的服务器之间绝对不会重复,所以Master-Master结构就没有任何问题了。当然,你还可以使用3台,4台,或者N台服务器,只要保证auto_increment_increment = N 再设置一下auto_increment_offset为适当的初始值就可以了,那样,我们的MySQL可以同时有几十台主服务器,而不会出现自增长ID重复。 在这里我们说的是2台MYSQL服务器,你也可以扩展到多台,实现方法类似 A -> B -> C-> D ->A 这样一个环形的备份结构就形成了,最后可要记住 自增长ID(主键)要设计好哦,否则会出错的

 

参考文献:

http://hi.baidu.com/wenzou/blog/item/6ca787efc7dbc91ffcfa3c4e.html

http://www.phpchina.com/html/46/t-53346.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值