MySQL双主模式(2022/11/19)

文章目录

  • MySQL双主模式(2022/11/19)
    • 一、搭建环境
    • 二、搭建过程
      • 2.1 MySQL 服务安装
      • 2.2 binlog 开启
      • 2.3 创建节点用户
      • 2.4 关联主从节点
      • 2.5 测试是否成功

本文将介绍如何搭建 MySQL 双主模式,互为主从,均可读写。

一、搭建环境

  • CentOS Linux release 7.8.2003;
  • Docker version 20.10.14;
  • MySQL Ver 14.14 Distrib 5.7.40;

二、搭建过程

2.1 MySQL 服务安装

此处笔者两台服务器的 IP 地址分别为 172.20.2.2 与 172.20.2.3,接下来将通过 Docker 分别在两台服务器上启动 MySQL 服务。

# 创建工作目录
$ mkdir -p /data/mysql$ cd /data/mysql# 启动 MySQL 服务
$ docker run --name mysql -itd --restart always \
-p 3306:3306 \
-v $PWD/config:/etc/mysql \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e LANG=C.UTF-8 \
-e TZ=Asia/Shanghai \
--log-driver json-file \
--log-opt max-size=1g \
--log-opt max-file=3 \
mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower_case_table_names=1

2.2 binlog 开启

# 在 172.20.2.2. 节点进行以下配置
# 编辑 $PWD/config/mysql.conf.d/mysqld.cnf 文件,不存在则手动创建,添加以下内容
$ mkdir -p $PWD/config/mysql.conf.d && vim $PWD/config/mysql.conf.d/mysqld.cnf
[mysqld]
server-id=1auto_increment_offset=1
auto_increment_increment=2binlog-format=row
expire_logs_days=7
log-bin=/var/lib/mysql/mysql-bin.log
log-slave-updates=true
sync_binlog=0gtid-mode=on
enforce-gtid-consistency=truereplicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys# 重启 MySQL
$ docker restart mysql# 在 172.20.2.3 节点进行以下配置
# 编辑 $PWD/config/mysql.conf.d/mysqld.cnf 文件,不存在则手动创建,添加以下内容
$ mkdir -p $PWD/config/mysql.conf.d && vim $PWD/config/mysql.conf.d/mysqld.cnf
[mysqld]
server-id=2auto_increment_offset=2
auto_increment_increment=2binlog-format=row
expire_logs_days=7
log-bin=/var/lib/mysql/mysql-bin.log
log-slave-updates=true
sync_binlog=0gtid-mode=on
enforce-gtid-consistency=truereplicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys# 重启 MySQL
$ docker restart mysql

注意:

  1. server-id 为每个节点的标识,不可重复;
  2. auto_increment_offset 与 auto_increment_increment 指定了 172.20.2.2 节点自增主键为奇数、172.20.2.3 节点自增主键为偶数,避免使用自增主键两节点同时写入时主键产生冲突;

2.3 创建节点用户

# 在 172.20.2.2 节点进行以下配置
$ docker exec -it mysql mysql -uroot -p
> CREATE USER master1@172.20.2.3 IDENTIFIED BY '123456';
> GRANT REPLICATION SLAVE ON *.* TO master1@172.20.2.3;
> FLUSH PRIVILEGES;# 在 172.20.2.3 节点进行以下配置
$ docker exec -it mysql mysql -uroot -p
> CREATE USER master2@172.20.2.2 IDENTIFIED BY '123456';
> GRANT REPLICATION SLAVE ON *.* TO master2@172.20.2.2;
> FLUSH PRIVILEGES;

2.4 关联主从节点

# 在 172.20.2.2 节点进行以下配置
$ docker exec -it mysql mysql -uroot -p
> CHANGE MASTER TO MASTER_HOST='172.20.2.3', MASTER_PORT=3306, MASTER_USER='master2', MASTER_PASSWORD='123456', MASTER_AUTO_POSITION=1;
> START SLAVE;
> SHOW SLAVE STATUS\G;
# 看到以下输出表示成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes# 在 172.20.2.3 节点进行以下配置
$ docker exec -it mysql mysql -uroot -p
> CHANGE MASTER TO MASTER_HOST='172.20.2.2', MASTER_PORT=3306, MASTER_USER='master1', MASTER_PASSWORD='123456', MASTER_AUTO_POSITION=1;
> START SLAVE;
> SHOW SLAVE STATUS\G;
# 看到以下输出表示成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

2.5 测试是否成功

# 在 172.20.2.2 节点创建 test 数据库
$ docker exec -it mysql mysql -uroot -p
> CREATE DATABASE IF NOT EXISTS `test` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;# 在 172.20.2.3 节点查看是否存在 test 数据库
$ docker exec -it mysql mysql -uroot -p
> SHOW DATABASES;# 在 172.20.2.3 节点删除 test 数据库
$ docker exec -it mysql mysql -uroot -p
> DROP TABLE IF EXISTS `test`;# 在 172.20.2.2 节点查看是否还存在 test 数据库
$ docker exec -it mysql mysql -uroot -p
> SHOW DATABASES;

参考链接:

  • MySQL双主(主主)架构方案 - ygqygq2 - 博客园 (cnblogs.com)
  • Mysql主从同步的实现原理与配置实战 - 知乎 (zhihu.com)
  • MySQL主从同步详解与配置 - 知乎 (zhihu.com)
  • slave复制进程不随mysql启动而启动 skip-slave-start参数_aeolus_pu的博客-CSDN博客
  • MySQL主从复制,启动slave时报错Slave failed to initialize relay log info structure from the repository_无知的蜗牛的博客-CSDN博客_data for column ‘relay_log_name’ too long
  • 故障案例:主从同步报错Fatal error: The slave I/O thread stops because master and slave have equal MySQL server_胡儿胡儿的博客-CSDN博客

MySQL双主模式(2022/11/19)相关推荐

  1. mysql双主和主从的区别_MySQL群集,主从复制及双主模式

    MySQL主从复制,是一个MySQL的群集,可以很好的解决的单点故障,并且可以进行读写分离来减轻数据库的压力.很多情况下主服务器仅作为写入数据服务器,而构建多个从节点来进行数据读取. 构建主从复制的几 ...

  2. Mariadb互为主从(双主模式)配置

    前言 这段时间 一直在Cloudera Manager集群上配置高可用的Mariadb服务.今天花一点记录一下自己的配置过程 希望后续的读者看到后 在遇到相同业务需求时具有参考价值. 以往我们在配置M ...

  3. mysql复制模式第二部分-----双主模式

    双主配置 我在配置主从服务器时,使用了两台服务器:10.19.34.126和10.19.34.91. 1.首先需要在这两台上搭建单独的mysql服务masterA和masterB. 2.配置数据库ma ...

  4. mysql双主复制模式_mysql复制模式第二部分-----双主模式

    双主配置 我在配置主从服务器时,使用了两台服务器:10.19.34.126和10.19.34.91. 1.首先需要在这两台上搭建单独的mysql服务masterA和masterB. 2.配置数据库ma ...

  5. Mysql集群--双主模式

    MySQL主从模式,一主多从.读写分离等.但是单主如果发生单点故障,从库切换成主库还需要作改动.因此,如果是双主或者多主,就会增加MySQL入口,提升了主库的可用性. 因此随着业务的发展,数据库架构可 ...

  6. mysql 主备和双主模式_MySQL双主模式

    双主模式 互为主从:两个节点各自都要开启binlog和relay log(1)数据不一致 (2)自动增长ID 定义一个节点使用奇数ID auto_increment_offset=1 auto_inc ...

  7. OpenResty+Keepalived组建高可用集群+双主模式

    * 环境: system version:CentOS Linux release 7.5.1804 (Core) 3.10.0-862.9.1.el7.x86_64 nginx version:op ...

  8. MySQL双主(主主)架构方案

    在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mysql入 ...

  9. mysql 双主 脑裂_MySQL双主(主主)架构方案

    在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mysql入 ...

最新文章

  1. UA MATH566 统计理论 Fisher信息量的性质上
  2. 将python3.7降为3.5_python3.7降至3.5【python cookbook】python访问子字符串
  3. ASP.NET基础教程-Web 自定义控件的使用-根据属性值从数据库中提取数据并在页面上自动生成一个表格...
  4. 商品管理系统c语言功能模板,C语言课程报告图书馆管理系统可做模板套用.doc
  5. 【个人笔记】OpenCV4 C++ 图像处理与视频分析 01课
  6. 用友U8对账不平,对账错误简单处理方法
  7. 前端面试宝典(2)——JavaScript
  8. 数据挖掘概念与技术(第三版)课后答案——第二章
  9. 【stata】一些关于数据处理的基础知识(备查代码)
  10. 企业电子邮箱的地址格式
  11. 4和2大于号小于号箭头那边_大于号小于号顺口溜
  12. Django数据映射 一对一 一对多 多对多
  13. 多层神经网络的局部最小值与全局最小值——The problem of convexity
  14. 无法卸载vue2.x提示up to date
  15. 微信怎么防封几率大_域名被墙有哪些处理方法?域名被微信封了该怎么解决?
  16. 计算机视觉图像处理入门
  17. Launcher的启动过程
  18. LAMP架构 【2】
  19. ps -ef 命令详解
  20. arduino结合74hc192实现计数显示

热门文章

  1. Leetcode-76:最小覆盖子串(困难题) 滑动窗口法超详细解析
  2. pstree命令的用法(查看进程树)
  3. CorelDRAW VBA - 在图层上创建一个新的OLE对象 Layer.CreateOLEObject
  4. 【计算机视觉40例】案例30:EigenFaces人脸识别
  5. 呀,街舞原来是这样的?
  6. 微信JSSDK获取用户地理位置(经纬度)
  7. apollo学习之---调试工具(realtime_plot)
  8. hping3工具介绍
  9. 对于在校学习课程结合实习的思考
  10. Linux默认启动项修改