一、A、B双主模型的实现条件:

1. 开启二进制日志

2. 开启中继日志

3. 解决自动增长列的问题

如果A服务器上自动增长的列编号有一个35,此时还没有同步到B服务器上,在B服务器上插入一条数据,编号也是35。当同步A的35到B服务器上来的话,必然产生数据丢失。

解决办法:

让在A上插入的行的自动增长都为奇数,让B服务器上的自动增长都为偶数。这样就解决了自动增长的问题。

假设A是一台生产环境中的数据库,现在想添加B服务器,实现双主模型。

二、步骤:

1. 在A、B服务器上创建具有复制权限的帐号

2. 在A、B服务器上修改配置文件(开启二进制日志、中继日志等)

3. 将A服务器上存在的数据文件导入到B服务器中

注意:导入数据的时候,先关闭B服务器的二进制日志。

4. 让B先成为slave,再让A成为slave

5. 测试

三、开始配置

1. 创建授权用户

1

2

3

4

5

6

mysql> grant replication slave on *.* to 'slave'@'192.168.2.96' identified by '12345';

Query OK, 0 rows affected (0.00 sec)

#A服务器

mysql> grant replication slave on *.* to 'slave'@'192.168.2.93' identified by '12345';

Query OK, 0 rows affected (0.00 sec)

#B服务器

2. 编辑配置文件

1

2

3

4

5

6

7

8

[root@oracle ~]# vim /etc/my.cnf

log-bin=mysql-bin                 #开启二进制日志

server-id=1

relay-log=mysql-relay-bin         #开启中继日志

log_slave_updates = on            #从服务器将时间记录到二进制日志中

auto_increment_increment=2        #自动增长的步长

auto_increment_offset=1           #自动增长的起始数值

#A服务器的配置

1

2

3

4

5

6

7

[root@node2 ~]# vim /etc/my.cnf

server-id=2

#log-bin=mysql-bin

#log_slave_updates = on

auto_increment_increment=2

auto_increment_offset=2

#B服务器的配置,先关闭二进制日志

重启服务

1

2

3

[root@oracle ~]# service mysqld restart

Shutting down MySQL..                                      [  OK  ]

Starting MySQL.                                            [  OK  ]

创建测试用的表

1

2

3

4

5

6

7

8

9

10

11

12

mysql> select * from info;

+-----+-------+-----+

| sid | name  | age |

+-----+-------+-----+

|   1 | zhang |  23 |

|   2 | li    |  12 |

|   3 | cheng |  34 |

|   4 | wang  |  22 |

|   5 | chen  |  44 |

+-----+-------+-----+

5 rows in set (0.00 sec)

#在A服务器上创建测试用的表

3. 将表导入到B服务器上

1

2

3

4

[root@oracle ~]# mysqldump --databases data --lock-all-tables --master-data=2 > /root/dump.sql

[root@oracle ~]# scp /root/dump.sql root@192.168.2.96:/root/

#A服务器上dump+拷贝

[root@node2 ~]# mysql < dump.sql     #B服务器上执行

4. 让B服务器先成为slave

1

2

mysql> change master to master_host='192.168.2.93',master_user='slave',master_password='12345',master_port=3306,MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=1068;

#MASTER_LOG_FILE和MASTER_LOG_POS在dump.sql中有记录

1

2

3

4

[root@node2 ~]# vim /etc/my.cnf

#将刚刚注释掉的参数生效

log-bin=mysql-bin

log_slave_updates = on

1

2

3

[root@node2 ~]# service mysqld restart

Shutting down MySQL..                                      [确定]

Starting MySQL.                                            [确定]

再让A服务器成为slave

1

2

3

4

5

6

7

8

9

10

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 |      120 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

#在B上查看二进制日志信息

mysql> change master to master_host='192.168.2.96',master_user='slave',master_password='12345',master_port=3306,MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=120;

mysql> start slave;

查看A、B服务器的状态:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.2.96

Master_User: slave

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 120

Relay_Log_File: mysql-relay-bin.000002

Relay_Log_Pos: 283

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

#A服务器上的状态

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.2.93

Master_User: slave

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000008

Read_Master_Log_Pos: 120

Relay_Log_File: mysql-relay-bin.000003

Relay_Log_Pos: 283

Relay_Master_Log_File: mysql-bin.000008

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

#在B服务器上查看状态

5. 测试:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

mysql> insert into info(name,age) values('sun',25),('ding',29);

#在A服务器上插入2行数据

mysql> select * from info;

+-----+-------+-----+

| sid | name  | age |

+-----+-------+-----+

|   1 | zhang |  23 |

|   2 | li    |  12 |

|   3 | cheng |  34 |

|   4 | wang  |  22 |

|   5 | chen  |  44 |

|   7 | sun   |  25 |

|   9 | ding  |  29 |

+-----+-------+-----+

7 rows in set (0.00 sec)

#在B服务器上查看的结果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

mysql> insert into info(name,age) values('BB',33),('BC',21);

#在B服务器上插入2行数据

mysql> select * from info;

+-----+-------+-----+

| sid | name  | age |

+-----+-------+-----+

|   1 | zhang |  23 |

|   2 | li    |  12 |

|   3 | cheng |  34 |

|   4 | wang  |  22 |

|   5 | chen  |  44 |

|   7 | sun   |  25 |

|   9 | ding  |  29 |

|  10 | BB    |  33 |

|  12 | BC    |  21 |

+-----+-------+-----+

9 rows in set (0.00 sec)

#在A服务器上查看

这样双主模型就已经实现了。

阅读(3688) | 评论(0) | 转发(0) |

linux mysql互为主从_mysql互为主从配置(双主模型)相关推荐

  1. ssdb主从及双主模型配置和简单管理

    ssdb主从及双主模型配置和简单管理 levelDB是一个key->value 的数据存储库,其只能在本地保存数据,支持持久化,并且支持保存非常大的数据,单机redis在保存较大数据的时候数十G ...

  2. 基于heartbeat v1配置mysql和httpd的高可用双主模型

    一.配置高可用集群的前提:(以两节点的heartbeat为例) ⑴时间必须保持同步 ⑵节点之间必须用名称互相通信 建议使用/etc/hosts,而不要用DNS 集群中使用的主机名为`uname -n` ...

  3. 死磕数据库系列(二十六):MySQL 高可用之单主、双主模型组复制配置实践

    点关注公众号,回复"1024"获取2TB学习资源! 前面我们学习:MySQL 高可用之组复制(MGR)技术的相关原理知识,今天我将详细的为大家介绍 MySQL 高可用技术组复制的单 ...

  4. 主nginx linux,Linux-实现双主模型的nginx的高可用

    1 [root@234c17 ~]# for i in {1..4};do curl www.a.com;curl www.b.com;sleep 1;done 2 234.57 3 234.77 4 ...

  5. 基于keepalived实现haproxy高可用的双主模型配置

      Keepalived会主动检测web服务器,把有故障的服务器从系统中剔除,在服务器修复以后会重新加入到服务器群众,不影响服务器的正常工作 VRRP:虚拟路由冗余协议   它把一个虚拟路由器的责任动 ...

  6. mysql 从库_mysql数据库主从配置

    在一篇文章<离线安装mysql数据库>,讲解了离线安装mysql数据库的过程,本文将讲解mysql数据库的主从配置方法.mysql数据库进行主从配置后,可以实现数据库的备份.同时应用也可以 ...

  7. mysql服务器架构_Mysql的主从服务器架构配置

    所谓主从Mysql服务器架构,就是在主服务器上的操作同时也拷贝一份到从服务器上来. 接下来我使用两台机器做一下这个过程, 复制的作用: 1.数据分部 2.实现读的负载均衡 3.备份(本身不能备份,但是 ...

  8. mysql中主从_MySQL的主从

    以下是个人实例操作得出的结论: mysql的主从同步是一个很成熟的架构: 优点: ①:在从服务器可以执行查询工作,降低主服务器压力(所谓的读写分离) ②:在从主服务器进行备份,避免备份期间影响主流服务 ...

  9. mysql 双主 脑裂_MySQL高可用方案——双主

    MySQL高可用方案--双主 发布时间:2020-03-01 20:45:48 来源:51CTO 阅读:253 作者:warrent MySQL的高可用方案有很多种,双主.MHA.MMM等等,这里只是 ...

最新文章

  1. [专栏]壹周技术秀(第一期)
  2. Object-C 有私有变量?私有方法?
  3. json转php数组 在线,PHP如何将JSON转换成数组/对象
  4. 【Swift学习笔记-《PRODUCT》读书记录-实现自定义转场动画】
  5. NGUI如何创建自己的精灵图集
  6. 老师一定没有教!9个数学速算技巧!看到第1个就跪了!
  7. matlab打开笔记本摄像头_如何解决笔记本电脑摄像头异常问题
  8. css文本行高是哪个属性_CSS中的line-height行高属性的使用技巧小结
  9. element-ui 可复选树型表格
  10. aop阻止方法运行_新型AOP高级氧化高浓度COD废水处理系统介绍
  11. 百度SEO站群易优CMS 聚合关键词seo插件(上权重神器)
  12. 配置tomcat远程debug
  13. 白板推导系列Pytorch-高斯判别分析(GDA)
  14. 网上发现一个钓鱼网站,我用 Python 渗透了该网站所有信息
  15. 【复习】数学分析知识点梳理【思维导图】
  16. 6410启动问题排除
  17. Latex 摘要排版
  18. python实现logistic增长模型拟合2019-nCov确诊人数2月1日更新
  19. JavaScript 和 Macromedia Flash 之间的通信示例
  20. 遥测、遥信、遥控、遥调的简要说明

热门文章

  1. CodeSign error: code signing is required for product type Application in SDK iOS XXX的解决办法
  2. Exchange 2013部署系列之(七)配置SSL多域名证书
  3. linux版的lcx
  4. cglib与java反射的比较
  5. python ssh2 库 远程登录 执行命令 文件获取
  6. java maven 编译 清理 测试 打包项目
  7. make: warning: file “xxx“ has modification time yyy s in the future 解决方法
  8. putty 配置导出
  9. linux 安装分区设置分区大小
  10. linux c socket ip地址 字符串 数字 转换 inet_addr inet_ntoa