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容器内无法解析DNS的问题 Could not resolve host

    在docker容器内使用  yum 或者 wget 命令,会提示  cannot resolving host address 无法解析主机地址  ,也就是容器内无法解析DNS。 Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&…

    Docker 2023年4月11日
    00
  • Docker 制作tomcat镜像并部署项目的步骤

    Docker是一种流行的容器化平台,可以让开发者们更加轻松地部署、运行、管理应用程序。 制作Tomcat镜像并部署项目可以分为以下步骤: 第一步:安装Docker 首先,需要在本地环境或服务器上安装Docker。具体安装步骤可以参考Docker官网文档。 第二步:编写Dockerfile文件 创建一个Dockerfile文件,编写Tomcat镜像的构建规则。…

    Docker 2023年5月16日
    00
  • docker An error occurred 虚拟化错误解决

    本人电脑上装了VMware和docker,系统是win10专业版,然后今天想用下docker,打开报错,Hyper-V未开启,开启之后再次报错 An error occurred Hardware assisted virtualization and data execution protection must be enabled in the BIOS…

    Docker 2023年4月16日
    00
  • 详解docker compose 用法

    详解Docker Compose用法 Docker Compose是一个工具,它使Docker容器的部署和管理变得非常容易。这里将详细讲解如何使用Docker Compose部署和管理容器。 安装Docker Compose 首先,需要在你的机器上安装Docker Compose。可以在官方网站上查找适合你操作系统的安装方法。 编写docker-compos…

    Docker 2023年5月16日
    00
  • 聊聊Docker中容器的创建与启停问题

    下面是对“聊聊Docker中容器的创建与启停问题”的完整攻略的详解: 容器创建 在Docker中创建容器需要借助Docker镜像,而关于Docker镜像的制作,可以参考Dockerfile来构建自己所需的镜像。 Docker镜像制作完成后,可以借助如下命令来创建容器: docker run -it –name <容器名称> <镜像名称&g…

    Docker 2023年5月15日
    00
  • Docker 使用国内镜像仓库的方法

    为了使用国内Docker镜像仓库,需要进行如下的几个步骤: 在本地安装 Docker 如果未安装 Docker, 需要先进行安装,安装教程参考 Docker 官方文档。 登录或注册阿里云账号 使用国内镜像仓库,需要登录或注册阿里云账号。在阿里云的控制台页面上可以进行账号注册或登录。 创建镜像加速器 登录阿里云控制台后,转到镜像加速器(容器镜像服务),并创建服…

    Docker 2023年5月16日
    00
  • 解决docker容器vim高度宽度显示不正常

      docker exec -it –env COLUMNS=`tput cols` –env LINES=`tput lines` your_container_name /bin/bash reference: https://blog.csdn.net/DongGeGe214/article/details/86674741

    Docker 2023年4月13日
    00
  • Docker网络及容器通信原理详解

    Docker网络及容器通信原理详解 在 Docker 中,网络是容器运行的基石,想要实现 Docker 容器之间的通信,我们需要理解 Docker 的网络原理。下面我将详细讲解 Docker 网络及容器通信原理,并提供两条示例说明。 Docker网络 Docker 中有四种网络模式,分别为: bridge 模式 host 模式 none 模式 overlay…

    Docker 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部