Mysql双主双从同步配置

Posted H__D

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql双主双从同步配置相关的知识,希望对你有一定的参考价值。

  本例介绍mysql双主双从同步配置,一主一从参考:【Mysql】主从同步配置

双主双从架构

  

搭建步骤

  1、环境准备,本例准备了4台服务器

    mysql版本:5.8

    系统:CentOS 7.4

    master1服务器:  172.17.0.2

    slave1服务器:  172.17.0.3

    master2服务器:  172.17.0.4

    slave2服务器:     172.17.0.5

  2、在4台服务器上分支安装mysql实例,参考:【Linux】CentOS 7.4 安装 MySQL 8.0.12 解压版

  3、修改4个mysql的配置

    master1的配置(/etc/my.cnf)如下:

 1 #主服务器唯一ID
 2 server-id=1
 3 #启用二进制日志
 4 log-bin=mysql-bin
 5 # 设置不要复制的数据库(可设置多个)
 6 binlog-ignore-db=mysql
 7 binlog-ignore-db=information_schema
 8 #设置需要复制的数据库
 9 binlog-do-db=test_slave
10 #设置logbin格式
11 binlog_format=STATEMENT
12 # 在作为从数据库的时候,有写入操作也要更新二进制日志文件
13 log-slave-updates
14 #表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
15 auto-increment-increment=2
16 # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
17 auto-increment-offset=1

    slave1的配置(/etc/my.cnf)如下:

1 #从服务器唯一ID
2 server-id=2
3 #启用中继日志
4 relay-log=mysql-relay

    master2的配置(/etc/my.cnf)如下:

 1 #主服务器唯一ID
 2 server-id=3
 3 #启用二进制日志
 4 log-bin=mysql-bin
 5 # 设置不要复制的数据库(可设置多个)
 6 binlog-ignore-db=mysql
 7 binlog-ignore-db=information_schema
 8 #设置需要复制的数据库
 9 binlog-do-db=test_slave
10 #设置logbin格式
11 binlog_format=STATEMENT
12 # 在作为从数据库的时候,有写入操作也要更新二进制日志文件
13 log-slave-updates
14 #表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
15 auto-increment-increment=2
16 # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
17 auto-increment-offset=2

    slave2的配置(/etc/my.cnf)如下:

1 #从服务器唯一ID
2 server-id=3
3 #启用中继日志
4 relay-log=mysql-relay

  4、重启4个mysql实例服务

  5、查询主节点信息

    登录master1的mysql,执行以下命令:show master status;

    

    登录master2的mysql,执行以下命令:show master status;

    

  6、配置双从机

    1)登录slave1的mysql,执行以下命令

1 CHANGE MASTER TO
2 MASTER_HOST = \'172.17.0.2\',
3 MASTER_USER = \'root\',
4 MASTER_PASSWORD = \'123456\',
5 MASTER_PORT = 3306,
6 MASTER_LOG_FILE=\'mysql-bin.000003\',
7 MASTER_LOG_POS=615;

    登录slave2的mysql,执行以下命令

1 CHANGE MASTER TO
2 MASTER_HOST = \'172.17.0.4\',
3 MASTER_USER = \'root\',
4 MASTER_PASSWORD = \'123456\',
5 MASTER_PORT = 3306,
6 MASTER_LOG_FILE=\'mysql-bin.000003\',
7 MASTER_LOG_POS=787;

    2)分别启动2个节点的从服务

      命令:start slave;

    3)查看从服务状态

      命令:show slave status\\G;

      如下:

      slave1

      

      slave2

      

  7、两个主机互相复制

    1)登录master1的mysql,执行以下命令

1 CHANGE MASTER TO
2 MASTER_HOST = \'172.17.0.4\',
3 MASTER_USER = \'root\',
4 MASTER_PASSWORD = \'123456\',
5 MASTER_PORT = 3306,
6 MASTER_LOG_FILE=\'mysql-bin.000003\',
7 MASTER_LOG_POS=787;

    登录master2的mysql,执行以下命令

1 CHANGE MASTER TO
2 MASTER_HOST = \'172.17.0.2\',
3 MASTER_USER = \'root\',
4 MASTER_PASSWORD = \'123456\',
5 MASTER_PORT = 3306,
6 MASTER_LOG_FILE=\'mysql-bin.000003\',
7 MASTER_LOG_POS=615;

    2)分别启动2个主节点的从服务

      命令:start slave;

验证双主双从

  1、登录master1,创建数据库 test_slave

1 CREATE DATABASE test_slave;

  2、创建表

1 CREATE TABLE `test_tbl` (
2   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
3   `title` varchar(100) NOT NULL,
4   `update_date` date DEFAULT NULL,
5   PRIMARY KEY (`id`)
6 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  3、插入数据

1 INSERT INTO `test_slave`.`test_tbl`(`id`, `title`, `update_date`) VALUES (1, \'白色\', \'2020-07-10\');

  4、更新数据

1 UPDATE `test_slave`.`test_tbl` SET `title` = \'黑色\', `update_date` = \'2020-07-10\' WHERE `id` = 1;

  查看master1、master2 和 slave1、slave2 节点数据是否相同

 

    

以上是关于Mysql双主双从同步配置的主要内容,如果未能解决你的问题,请参考以下文章

17 Rocketmq集群双主双从同步搭建

17 Rocketmq集群双主双从同步搭建

keepalived双主双从配置

rocketmq 双主双从同步写安装部署

mysql双主双从

转载MySQL双主双从高可用集群架构