返回

如何利用 Docker 快速搭建 MySQL 主从复制

后端

利用 Docker 快速搭建 MySQL 主从复制环境

简介

在当今数据驱动的世界中,维护数据完整性、可用性和安全性至关重要。MySQL 主从复制是一种久经考验的技术,可实现这些目标,为您提供数据的冗余、高可用性和可伸缩性。

本指南将一步步指导您利用 Docker,一个轻量级的容器化平台,快速、轻松地设置 MySQL 主从复制环境。我们将在 Docker 容器中创建主服务器和从服务器,并配置它们以实现数据复制。

先决条件

  • 安装并运行 Docker
  • 可用的 MySQL 数据库
  • 对 MySQL 数据库的基本了解

步骤 1:拉取 MySQL 镜像

首先,从 Docker Hub 拉取官方 MySQL 镜像:

docker pull mysql:8.0

步骤 2:创建 MySQL 主容器

接下来,使用以下命令创建 MySQL 主容器:

docker run -d --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
  • -d:在后台运行容器
  • -p:将容器的 3306 端口映射到主机的 3306 端口
  • -e:设置 MySQL 根用户的密码为 123456

步骤 3:创建 MySQL 从容器

现在,创建一个 MySQL 从容器:

docker run -d --name mysql-slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
  • -d:在后台运行容器
  • -p:将容器的 3306 端口映射到主机的 3307 端口
  • -e:设置 MySQL 根用户的密码为 123456

步骤 4:配置 MySQL 主从复制

4.1 配置主服务器

在主服务器上启用二进制日志记录:

mysql -u root -p123456 -h localhost -P 3306

SET GLOBAL log_bin = ON;

4.2 配置从服务器

在从服务器上配置复制:

mysql -u root -p123456 -h localhost -P 3307

CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='repl', MASTER_PASSWORD='repl_password', MASTER_PORT=3306;

4.3 启动复制

最后,启动复制:

START SLAVE;

步骤 5:验证复制

使用以下命令验证复制是否正常工作:

show slave status \G

您应该看到以下输出:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

结论

恭喜您,您已经成功地利用 Docker 快速搭建了 MySQL 主从复制环境。这将为您的数据库提供数据冗余、提高可用性,并允许您在需要时轻松扩展。

常见问题解答

1. 如何检查主服务器的二进制日志记录状态?

mysql -u root -p123456 -h localhost -P 3306

SHOW MASTER STATUS;

2. 如何查看从服务器的复制状态?

mysql -u root -p123456 -h localhost -P 3307

SHOW SLAVE STATUS;

3. 如果复制停止了怎么办?

首先检查主服务器的二进制日志记录状态。如果没有启用,请启用它。其次,检查从服务器的复制状态。如果复制已停止,请重新启动复制进程:

STOP SLAVE;

START SLAVE;

4. 如何禁用 MySQL 主从复制?

在从服务器上执行以下命令:

STOP SLAVE;

RESET SLAVE;

5. 如何将数据从从服务器复制回主服务器?

这种复制称为逆向复制,在 MySQL 中不受支持。相反,建议使用 MySQL 备份和恢复工具。