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

mysql5.7配置双主同步

  • 双主模式定义
    • 前提配置
      • 一、master_1配置
      • 二、master_2配置
      • 三、双主配置
      • 四、验证主主同步

双主模式定义

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

在这里插入图片描述

随着业务发展,架构会从主从模式演变为双主模式,建议用双主单写,再引入高可用组件,例如 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=1auto_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=sysrelay_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 节点数据是否相同

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/108938.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#自定义控件组件实现Chart图表(多Y轴,选择图例加粗,选择放大,缩放,点击查看信息等功能)

先看看ECharts的效果 C# 工具箱里的Chart控件就不演示了,很多效果没办法做出来,做出来效果也很不理想。所以,需要自己去手动实现工具箱里的Chart没办法实现的效果; 先看看实现后的效果 绑定数据 点击图表 点击右侧图例加粗 选择放大 右键 点击缩小,恢复

小程序中如何查看指定会员的所有订单?

在小程序中,查看指定会员的所有订单可以通过如下方式实现。 1. 找到指定的会员卡。在管理员后台->会员管理处,找到需要查看订单记录的会员卡。也支持对会员卡按卡号、手机号和等级进行搜索。 2. 查看会员卡详情。点击查看详情进入该会员卡的详情页面…

【搭建私人图床】本地PHP搭建简单Imagewheel云图床,在外远程访问

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…

Kotlin+MVVM 构建todo App 应用

作者:易科 项目介绍 使用KotlinMVVM实现的todo app,功能界面参考微软的Todo软件(只实现了核心功能,部分功能未实现)。 功能模块介绍 项目模块:添加/删除项目,项目负责管理todo任务任务模块&a…

4-1 张量的结构操作

张量结构操作主要包括:张量创建,索引切片,维度变换,合并分割。 一、创建张量 张量创建的许多方法和numpy中创建array的方法很像。以下记录一些比较常用的操作: (1)直接采用torch.tensor创建&…

【操作系统】进程的通信IPC

进程通信是指进程之间的信息交换。 低级通信方式:PV操作 高级通信方式:1.共享存储2.消息传递3.管道通信 共享存储 低级数据结构共享,高级存储区共享。 对共享空间进行读写操作时,需要用到互斥工具。 消息传递 利用发送消息和…

OpenCV 01(图像加载与显示)

一、机器视觉 现在说的机器视觉(Machine Vision)一般指计算机视觉(Computer Vision), 简单来说就是研究如何使机器看懂东西。就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传…

【LeetCode-中等题】904. 水果成篮

文章目录 题目方法一:滑动窗口方法二: 题目 题目的意思就是:找至多包含两种元素的最长子串,返回其长度 方法一:滑动窗口 class Solution { // 滑动窗口 找至多包含两种元素的最长子串,返回其长度public …

C++之编译时预定义宏flag(二百一十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

UE5 Foliage地形植被实例删不掉选不中问题

目前问题测试发生在5.2.1上 地形上先填充后刷的植被删不掉 首先这个就是bug,大概看到说是5.3上能解决了,对此我只能吐槽ue5上地形植被bug太多了 什么nanite还能产生bug,不过这次又不是,整个删掉instance可以删除所有植被&#…

Python学习笔记:导入txt、xlsx文件并做简单函数处理

1.txt文件 1.1路径 file_path "E:\Python Project\temp.txt" with open(file_path) as f:content1 f.read() 导入文件时,如果直接放文件绝对路径上去会报错,这是因为\P是转义字符 所以在绝对路径前面加r可以避免将引号内的内容识别成转义…

Can‘t load the model for ‘stabilityai/sd-vae-ft-mse‘

Can’t load the model for ‘stabilityai/sd-vae-ft-mse’. If you were trying to load it from ‘https://huggingface.co/models’, make sure you don’t have a local directory with the same name. Otherwise, make sure ‘stabilityai/sd-vae-ft-mse’ is the correct…