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

 更新时间:2024年07月04日 09:32:11   作者:Roc-xb  
Docker MySQL 双主复制是一种数据库高可用和数据冗余的技术,它利用 Docker 容器化的优势,在两个或多台MySQL服务器上同时运行并维护数据库副本,这两个主服务器可以互相同步数据更新,本文给大家介绍了Docker搭建MySQL双主复制详细教程,需要的朋友可以参考下

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

一、创建目录

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

mkdir -p master1-data master2-data

二、编写docker-compose.yml

version: '3.7'

services:
  mysql-master1:
    image: mysql:5.7.36
    container_name: mysql-master1
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mydb
    volumes:
      - ./master1-data:/var/lib/mysql
    ports:
      - "3306:3306"
    command: --server-id=1 --log-bin=mysql-bin --gtid-mode=ON --enforce-gtid-consistency=ON

  mysql-master2:
    image: mysql:5.7.36
    container_name: mysql-master2
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mydb
    volumes:
      - ./master2-data:/var/lib/mysql
    ports:
      - "3307:3306"
    command: --server-id=2 --log-bin=mysql-bin --gtid-mode=ON --enforce-gtid-consistency=ON

volumes:
  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 TO
  MASTER_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 TO
  MASTER_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双主复制就配置完成了,你可以尝试在一个主数据库上插入数据,并在另一个主数据库上检查数据,确定双主复制配置成功。正确的结果是,在一个数据库进行了新增、删除、修改等操作后的结果,在第二个数据库中会进行同步。

到此这篇关于Docker搭建MySQL双主复制详细教程的文章就介绍到这了,更多相关Docker MySQL双主复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker Dockerfile的使用实例

    Docker Dockerfile的使用实例

    这篇文章主要介绍了Docker Dockerfile的使用实例的相关资料,非常不错具有一定的参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • 使用Docker配置redis sentinel哨兵的方法步骤

    使用Docker配置redis sentinel哨兵的方法步骤

    本文主要介绍了Docker配置redis sentinel哨兵的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • docker 手动构建新镜像的方法

    docker 手动构建新镜像的方法

    这篇文章主要介绍了docker 手动构建新镜像的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Docker部署mysql一主一从的操作方法

    Docker部署mysql一主一从的操作方法

    这篇文章主要介绍了Docker部署mysql一主一从,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • Docker 教程之镜像创建及修改详细介绍

    Docker 教程之镜像创建及修改详细介绍

    这篇文章主要介绍了Docker 教程之镜像创建及修改详细介绍的相关资料,需要的朋友可以参考下
    2016-12-12
  • Docket Desktop安装redis并设置密码方式

    Docket Desktop安装redis并设置密码方式

    在DockerDesktop中安装Redis并设置密码的步骤包括启动Docker、拉取Redis镜像、创建并运行Redis容器设置密码、验证容器运行、连接并验证密码,以及可选的持久化数据设置
    2025-03-03
  • Docker制作镜像的完整过程

    Docker制作镜像的完整过程

    本文主要介绍了Docker制作镜像的完整过程,以制作CentOS镜像为例,讲述对镜像自定义,打包以及推送的远程仓库的过程,感兴趣的可以了解一下
    2021-11-11
  • 关于docker安全之Docker-TLS加密通讯问题

    关于docker安全之Docker-TLS加密通讯问题

    这篇文章主要介绍了docker安全之Docker-TLS加密通讯,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 如何利用Docker部署一个简单的springboot项目

    如何利用Docker部署一个简单的springboot项目

    这篇文章主要介绍了如何利用Docker部署一个简单的springboot项目,本文通过实例图文实例代码相结合给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • 基于Docker+Selenium Grid的测试技术应用示例代码

    基于Docker+Selenium Grid的测试技术应用示例代码

    Selenium Grid允许我们在多台计算机上并行运行测试,并集中管理不同的浏览器版本和浏览器配置。这篇文章给大家介绍基于Docker+Selenium Grid的测试技术应用示例代码,需要的朋友参考下吧
    2021-08-08

最新评论