Docker部署MySQL8集群(一主二从)的实现步骤

  1. 安装Docker并创建网络

首先需要在本机安装Docker,安装完成之后,创建一个网络,用于在不同容器之间通信。

  • 创建网络的命令如下所示:
docker network create mysql_cluster
  1. 创建MySQL8容器

为了实现一主二从的集群部署,我们需要创建主节点和从节点的容器。在这里使用官方提供的MySQL 8镜像。

  • 创建主节点容器:
docker run --name=mysql_master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d --net=mysql_cluster mysql/mysql-server:8.0 --server-id=1 --log-bin --gtid-mode=ON --enforce-gtid-consistency

此命令中,--name指定容器名称为mysql_master;-p 3306:3306为映射本地端口号和容器端口号的关系;-e MYSQL_ROOT_PASSWORD=password为设置密码;-d为后台运行;--net=mysql_cluster为指定网络;--server-id=1 --log-bin --gtid-mode=ON --enforce-gtid-consistency为配置MySQL主节点的参数。

  • 创建两个从节点容器:
docker run --name=mysql_slave1 -d --net=mysql_cluster mysql/mysql-server:8.0 --server-id=2 --log-bin --gtid-mode=ON --enforce-gtid-consistency
docker run --name=mysql_slave2 -d --net=mysql_cluster mysql/mysql-server:8.0 --server-id=3 --log-bin --gtid-mode=ON --enforce-gtid-consistency

在创建两个从节点容器时,不需要设置端口号,除此之外,其他的参数设置与创建主节点容器时相同。

  1. 配置主从复制

在配置主从复制时需要完成以下步骤:

  • 登录并进入主容器
docker exec -it mysql_master mysql -uroot -p

在输入密码之后进入MySQL控制台。

  • 创建用于主从复制的用户并完成授权
CREATE USER 'replication'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
  • 查询主节点状态
SHOW MASTER STATUS;

在查询出来的结果中,记录下File和Position列的值,这些值后面会在配置从节点时使用到。

  • 配置从节点信息
CHANGE MASTER TO master_host='mysql_master', master_port=3306, master_user='replication', master_password='password', master_auto_position=1;

在以上命令中,master_host配置主节点的地址;master_port为主节点的端口;master_user为用于主从复制的用户;master_password为用于主从复制的用户的密码;master_auto_position为选择自动位点模式。

  • 启动从节点的复制
START SLAVE;
  • 查询从节点状态
SHOW SLAVE STATUS\G

在查询出来的结果中,查看Slave_IO_RunningSlave_SQL_Running是否为Yes,如果都为Yes则表示主从复制配置成功。

  1. 示例

以下是两个示例,分别展示了创建一个MySQL主从集群应用的两种方式:

  • 通过Docker Compose创建MySQL主从集群应用:
version: "3"
services:
  master:
    image: mysql/mysql-server:8.0
    container_name: mysql_master
    volumes:
      - master-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "password"
    command: [
      "--server-id=1",
      "--log-bin",
      "--gtid-mode=ON",
      "--enforce-gtid-consistency"
    ]
    ports:
      - "3306:3306"
    networks:
      - mysql_cluster
  slave1:
    image: mysql/mysql-server:8.0
    container_name: mysql_slave1
    volumes:
      - slave1-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "password"
    command: [
      "--server-id=2",
      "--log-bin",
      "--gtid-mode=ON",
      "--enforce-gtid-consistency"
    ]
    networks:
      - mysql_cluster
  slave2:
    image: mysql/mysql-server:8.0
    container_name: mysql_slave2
    volumes:
      - slave2-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "password"
    command: [
      "--server-id=3",
      "--log-bin",
      "--gtid-mode=ON",
      "--enforce-gtid-consistency"
    ]
    networks:
      - mysql_cluster

volumes:
  master-data:
  slave1-data:
  slave2-data:

networks:
  mysql_cluster:

在以上配置中,我们可以看到使用Docker Compose来创建MySQL主从集群应用的步骤主要包括设置镜像名称、容器名称、数据路径、环境变量、网络等内容。这种方式可以一步完成MySQL主从集群的构建。

  • 通过Dockerfile创建MySQL主从集群应用
FROM mysql/mysql-server:8.0

RUN echo "max_allowed_packet=16777216" >> /etc/my.cnf

COPY my.cnf /etc/mysql/conf.d/my.cnf

EXPOSE 3306

在这种方式下,我们使用了Dockerfile,这个文件的内容包括了FROM、RUN、COPY、EXPOSE等指令,这些指令用于构建MySQL主从集群应用所需要的环境。这种方式需要手动依次创建MySQL主节点、两个从节点。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker部署MySQL8集群(一主二从)的实现步骤 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Docker搭建HDFS+Spark集群

    启动一个centos容器 docker run -i -t –name hadoop centos /bin/bash 下载好需要的包 [root@CyzLearnCloud sparklearn]# wget –no-check-certificate –no-cookies –header “Cookie: oraclelicense=accep…

    Docker 2023年4月16日
    00
  • 安装 Docker 19.03.12

    安装docker 19.03.12 目录 安装docker 19.03.12 1:物理环境 2:yum安装docker-ce 3:安装docker引擎 4:查看版本 5:开机启动,查看状态 6:修改配置文件 1:物理环境 本机环境:Centos7.7 为了环境的纯净卸载老版本 yum remove docker \ docker-client \ docke…

    Docker 2023年4月13日
    00
  • Docker镜像构建的两种方法解析

    下面是针对题目要求的详细讲解: Docker镜像构建的两种方法解析 Docker镜像的构建可以使用两种方法:Dockerfile和命令行。下面将分别对这两种方法进行详细说明。 Dockerfile 简介 Dockerfile是Docker中用于构建镜像的文件。在Dockerfile中可以指定运行环境、安装软件和设置配置等内容。使用Dockerfile可以实现…

    Docker 2023年5月16日
    00
  • 查看docker镜像仓库中镜像版本信息

    背景 现在有很多软件服务都提供了docker镜像进行快速搭建,我们经常需要使用某特定版本,这里就涉及到了docker镜像的版本,那如何查看docker镜像版本呢? 查看方法 如果想要查看某docker镜像的全部版本,docker_img为镜像名 curl https://registry.hub.docker.com/v1/repositories/${do…

    Docker 2023年4月11日
    00
  • Linux 离线安装docker的过程(一键式安装)

    以下是 Linux 离线安装 Docker 的过程,这是一键式安装。 准备工作 在开始安装前,您需要确保已经做好以下准备工作: 离线下载 Docker CE 的二进制安装包。 上传安装包到 Linux 服务器。 确保 Linux 服务器已经安装 Docker 的必要依赖项。 步骤1:安装依赖项 首先,我们需要确保 Linux 服务器上已经安装了两个必要的依赖…

    Docker 2023年5月16日
    00
  • 隔离 docker 容器中的用户

    笔者在前文《理解 docker 容器中的 uid 和 gid》介绍了 docker 容器中的用户与宿主机上用户的关系,得出的结论是:docker 默认没有隔离宿主机用户和容器中的用户。如果你已经了解了 Linux 的 user namespace 技术(参考《Linux Namespace : User》),那么自然会问:docker 为什么不利用 Linu…

    Docker 2023年4月12日
    00
  • docker报错:denied: requested access to the resource is denied unauthorized: authentication required

    errors:denied: requested access to the resource is deniedunauthorized: authentication required。 解决方案 修改发布的镜像的REPOSITORY为自己的账户名+镜像,比如我的用户名是123456。 docker tag nginx 123456/nginx:1.0 …

    Docker 2023年4月13日
    00
  • Grafana 系列文章(五):Grafana Explore 查询管理

    ?️URL: https://grafana.com/docs/grafana/latest/explore/query-management/ ?Description: Explore 中的查询管理 为了帮助调试查询,Explore 允许你调查查询请求和响应,以及查询统计数据,… Explore 中的查询管理 为了帮助调试查询,Explore 允许你…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部