mysql5.7版本数据库主主同步

双主模式定义

双主模式是指两台服务器互为主从,任何一台服务器数据变更,都会通过复制应用到另外一方的数据库中。

在这里插入图片描述

随着业务发展,架构会从主从模式演变为双主模式,建议用双主单写,再引入高可用组件,例如 Keepalived和MMM等工具,实现主库故障自动切换。

前提配置

两台mysql服务器作为master1 和 master2

一、master_1配置

修改配置文件:

 1 | vim /etc/my.cnf

在主从配置的基础上追加配置

#主从配置
log_bin=mysql-bin
server-id=1
sync-binlog=1
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys

#追加双主配置
relay_log=mysql-relay-bin
log_slave_updates=1

auto_increment_offset=1
auto_increment_increment=2

请添加图片描述

1、配置完后重启mysql

service mysqld restart

2、登录master1的mysql数据库

mysql -uroot -p

3、在master1服务器上创建用于复制的用户,并授权:

mysql> grant replication slave on *.* to 'root'@'%' identified by 'Admin@123';
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Admin@123';
mysql> flush privileges;

将“root”替换为你自定义的用户名,将“Admin@123”替换为对应的密码。

4、查看master1状态

mysql> show master status;

请添加图片描述

master_1的File和Position这两个参数在mater_2上要用到,用于建立关系。

二、master_2配置

1、修改配置文件

vi /etc/my.cnf

2、master2配置如下

log-bin=mysql-bin
server-id=3
sync-binlog=1
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

relay_log=mysql-relay-bin
log_slave_updates=1
auto_increment_offset=2
auto_increment_increment=2

请添加图片描述

3、配置完重启master2

service mysqld restart

4、登录master2数据库

mysql -uroot -p

5、在master2服务器上创建用于复制的用户,并授权:

mysql> grant replication slave on *.* to 'root'@'%' identified by 'Admin@123';
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Admin@123';
mysql> flush privileges;

6、查看master2状态

mysql> show master status;

请添加图片描述

master2的File和Position这两个参数在mater1上要用到,用于建立关系。

三、双主配置

1、master1建立和master2的关系

mysql> change master to master_host='172.16.100.233',master_port=3306,master_user='root',master_password='Admin@123',master_log_file='mysql-bin.000008',master_log_pos=3802974;

master_host:master2的host
master_port:master2的port
master_user:master2的用户名
master_password:master2的密码
master_log_file:master2的log_file,即之前查询出的master2的File
master_log_pos:master2的log_pos,即之前查询出的master2的Position

2、master1启动slave,并查看状态

mysql> start slave;
mysql> show slave status \G;

请添加图片描述

注意没报错并且Slave_IO_Running和Slave_SQL_Running都为YES,则配置成功。

3、master2建立和master1的关系

mysql> change master to master_host='172.16.106.200',master_port=3306,master_user='root',master_password='Admin@123',master_log_file=='mysql-bin.000003',master_log_pos=6021336;

master_host:master1的host
master_port:master1的port
master_user:master1的用户名
master_password:master1的密码
master_log_file:master1的log_file,即之前查询出的master2的File
master_log_pos:master1的log_pos,即之前查询出的master2的Position

4、master2启动slave,并查看状态

mysql> start slave;
mysql> show slave status \G;

请添加图片描述

注意没报错并且Slave_IO_Running和Slave_SQL_Running都为YES,则配置成功。

四、验证主主同步

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

CREATE DATABASE test_slave;

2、创建表

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

3、插入数据

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

4、更新数据

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

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值