mysql中怎么实现主主同步

42次阅读
没有评论

共计 2360 个字符,预计需要花费 6 分钟才能阅读完成。

本篇文章为大家展示了 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  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  identified by 1234568
Query OK, 0 rows affected (0.01 sec)
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 -h292.168.1.102 -urepl8 -p1234568  ok
 
102 增加,101 同步
mysql -h292.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, hellip; 等奇数 ID 了
 
B:my.ini 上加入参数
 
auto_increment_offset = 2
auto_increment_increment = 2
这样 B 的 auto_increment 字段产生的数值是:2, 4, 6, 8, hellip; 等偶数 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(主键)要设计好哦,否则会出错的。

上述内容就是 mysql 中怎么实现主主同步,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计2360字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)