mysql 主主同步
发布日期:2021-11-08 08:45:08 浏览次数:13 分类:技术文章

本文共 2457 字,大约阅读时间需要 8 分钟。

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查奇数IDB插偶数ID,当然如果服务器多的话,你可以定义算法,只要不同就可以了

 

在这里我们在A,B上加入参数,以实现奇偶插入

 

Amy.ini上加入参数

 

auto_increment_offset = 1

auto_increment_increment = 2

这样Aauto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID

 

Bmy.ini上加入参数

 

auto_increment_offset = 2

auto_increment_increment = 2

这样Bauto_increment字段产生的数值是:2, 4, 6, 8, …等偶数ID

 

可以看出,你的auto_increment字段在不同的服务器之间绝对不会重复,所以Master-Master结构就没有任何问题了。当然,你还可以使用3台,4台,或者N台服务器,只要保证auto_increment_increment = N 再设置一下auto_increment_offset为适当的初始值就可以了,那样,我们的MySQL可以同时有几十台主服务器,而不会出现自增长ID重复。

 

在这里我们说的是2MYSQL服务器,你也可以扩展到多台,实现方法类似

A -> B -> C-> D ->A

这样一个环形的备份结构就形成了,最后可要记住 自增长ID(主键)要设计好哦,否则会出错的。

 

转载地址:https://blog.csdn.net/zhengdl126/article/details/83428748 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Sphinx mysql 安装和测试
下一篇:apache自带负载均衡的集群功能实战录

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月13日 16时46分35秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章