当前位置: 首页 > news >正文

Docker搭建MySQL双主复制详细教程

在此之前需要提前安装好Docker和 Docker Compose 。

在这里插入图片描述

一、创建目录

首先创建一个本地数据挂载目录。

mkdir -p master1-data master2-data

二、编写docker-compose.yml

version: '3.7'services:mysql-master1:image: mysql:5.7.36container_name: mysql-master1environment:MYSQL_ROOT_PASSWORD: rootpasswordMYSQL_DATABASE: mydbvolumes:- ./master1-data:/var/lib/mysqlports:- "3306:3306"command: --server-id=1 --log-bin=mysql-bin --gtid-mode=ON --enforce-gtid-consistency=ONmysql-master2:image: mysql:5.7.36container_name: mysql-master2environment:MYSQL_ROOT_PASSWORD: rootpasswordMYSQL_DATABASE: mydbvolumes:- ./master2-data:/var/lib/mysqlports:- "3307:3306"command: --server-id=2 --log-bin=mysql-bin --gtid-mode=ON --enforce-gtid-consistency=ONvolumes:master1-data:master2-data:

三、拉取镜像

我是使用的mysql5.7.36版本的,如果不同,需要自行修改

docker pull mysql:5.7.36

在这里插入图片描述

四、启动 Docker Compose

docker-compose up -d

在这里插入图片描述

五、初始化双主复制

1、在第一个主数据库上配置复制用户

进入 mysql-master1 容器

docker exec -it mysql-master1 bash

登录 MySQL

mysql -u root -p

执行以下 SQL 命令

CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;SHOW MASTER STATUS;

记下 File 和 Position 的值。

2、在第二个主数据库上配置复制用户

进入 mysql-master2 容器

docker exec -it mysql-master2 bash

登录 MySQL

mysql -u root -p

执行以下 SQL 命令

CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;SHOW MASTER STATUS;

记下 File 和 Position 的值。

3、在第一个主数据库上配置从第二个主数据库同步

进入 mysql-master1 容器

docker exec -it mysql-master1 bash

登录 MySQL

mysql -u root -p

执行以下 SQL 命令

CHANGE MASTER TOMASTER_HOST='mysql-master2',MASTER_USER='replica',MASTER_PASSWORD='replica_password',MASTER_LOG_FILE='mysql-bin.000001', -- 使用第二个主数据库的File值MASTER_LOG_POS=154; -- 使用第二个主数据库的Position值START SLAVE;

4、在第二个主数据库上配置从第一个主数据库同步:

进入 mysql-master2 容器

docker exec -it mysql-master2 bash

登录 MySQL:

mysql -u root -p

执行以下 SQL 命令

CHANGE MASTER TOMASTER_HOST='mysql-master1',MASTER_USER='replica',MASTER_PASSWORD='replica_password',MASTER_LOG_FILE='mysql-bin.000001', -- 使用第一个主数据库的File值MASTER_LOG_POS=154; -- 使用第一个主数据库的Position值START SLAVE;

六、验证主从复制

,到这里,L双主复制就配置完成了,你可以尝试在一个主数据库上插入数据,并在另一个主数据库上检查数据,确定双主复制配置成功。正确的结果是,在一个数据库进行了新增、删除、修改等操作后的结果,在第二个数据库中会进行同步。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【前端】从零开始学习编写HTML
  • HNU小学期BSP软件编程基础十道测试题
  • Java学习
  • Linux基础IO
  • 海外金融机构银行保险证券数字化转型营销销售数字化成功案例讲师培训师讲授开户销售营销客户AI人工智能创新思维
  • 红酒知识百科:从入门到精通
  • 入门PHP就来我这(高级)18 ~ 获取结果集
  • 【C++】开源:坐标转换和大地测量GeographicLib库配置使用
  • 【Java算法】二分查找 下
  • 大模型学习笔记0-前言
  • vue 切换主题色切换主题色切换主题色切换主题色切换主题色
  • python使用tkinter添加下载进度UI
  • 如何使用uer做多分类任务
  • 刷题之多数元素(leetcode)
  • 11.索引_创建不同种类索引(primary+unique+复合....)
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • C# 免费离线人脸识别 2.0 Demo
  • canvas 高仿 Apple Watch 表盘
  • ES6系统学习----从Apollo Client看解构赋值
  • ESLint简单操作
  • jquery cookie
  • k8s如何管理Pod
  • MySQL几个简单SQL的优化
  • nodejs实现webservice问题总结
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • RxJS: 简单入门
  • Shadow DOM 内部构造及如何构建独立组件
  • SpringBoot 实战 (三) | 配置文件详解
  • Vue组件定义
  • 分享一份非常强势的Android面试题
  • 关于Java中分层中遇到的一些问题
  • 后端_MYSQL
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 深度学习入门:10门免费线上课程推荐
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • #QT(一种朴素的计算器实现方法)
  • #VERDI# 关于如何查看FSM状态机的方法
  • (003)SlickEdit Unity的补全
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (33)STM32——485实验笔记
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (南京观海微电子)——I3C协议介绍
  • (一)80c52学习之旅-起始篇
  • *2 echo、printf、mkdir命令的应用
  • .“空心村”成因分析及解决对策122344
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .describe() python_Python-Win32com-Excel
  • .Net Core 微服务之Consul(二)-集群搭建
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET建议使用的大小写命名原则
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @Controller和@RestController的区别?