Docker MySQL 主从复制与创建用户

在当今的云计算时代,Docker 容器技术已经成为一种流行的应用部署方式。MySQL 是一个广泛使用的开源关系数据库管理系统。本文将介绍如何在 Docker 中配置 MySQL 主从复制,并创建用户。

一、环境准备

首先,确保你的系统中安装了 Docker。可以通过以下命令来安装 Docker:

curl -fsSL  -o get-docker.sh
sh get-docker.sh

二、创建 MySQL 容器

接下来,我们将创建两个 MySQL 容器,一个作为主服务器,另一个作为从服务器。

主服务器

docker run --name mysql-master -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7

从服务器

docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7

三、配置 MySQL 主从复制

在主服务器上,我们需要创建一个复制用户,并配置复制参数。

  1. 进入主服务器容器:
docker exec -it mysql-master bash
  1. 登录 MySQL:
mysql -uroot -p
  1. 创建复制用户:
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl';
  1. 授予复制权限:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
  1. 获取主服务器的二进制日志文件和位置:
SHOW MASTER STATUS;

记录下 FilePosition 的值。

  1. 退出 MySQL:
exit
  1. 退出容器:
exit

配置从服务器

  1. 进入从服务器容器:
docker exec -it mysql-slave bash
  1. 登录 MySQL:
mysql -uroot -p
  1. 配置从服务器复制主服务器:
CHANGE MASTER TO
  MASTER_HOST='mysql-master',
  MASTER_USER='repl',
  MASTER_PASSWORD='repl',
  MASTER_LOG_FILE='recorded_file_name',
  MASTER_LOG_POS=recorded_position;

recorded_file_namerecorded_position 替换为之前在主服务器上获取的值。

  1. 启动复制:
START SLAVE;
  1. 检查复制状态:
SHOW SLAVE STATUS\G

如果 Slave_IO_RunningSlave_SQL_Running 都显示为 Yes,则表示复制成功。

  1. 退出 MySQL 和容器。

四、饼状图与甘特图

以下是使用 Mermaid 语法生成的饼状图和甘特图示例。

饼状图

pie
    title MySQL 主从复制配置步骤
    "创建容器" : 25
    "配置主服务器" : 25
    "配置从服务器" : 25
    "检查复制状态" : 25

甘特图

gantt
    title MySQL 主从复制配置时间线
    dateFormat  YYYY-MM-DD
    section 创建容器
    创建主服务器容器    : done,    des1, 2024-01-01,2024-01-02
    创建从服务器容器    : done,    des2, 2024-01-02,2024-01-03

    section 配置主服务器
    创建复制用户        : active,  des3, after des1, 3d
    授予复制权限        :         des4, after des3, 1d

    section 配置从服务器
    配置从服务器复制主服务器 :         des5, after des4, 2d
    启动复制并检查状态    :         des6, after des5, 1d

五、总结

通过本文的介绍,你应该已经了解了如何在 Docker 中配置 MySQL 主从复制,并创建用户。这个过程涉及到创建容器、配置主从服务器、创建用户和授予权限等步骤。通过使用饼状图和甘特图,我们可以更直观地了解整个配置过程和时间线。希望本文对你有所帮助。