如何使用Docker搭建MySQL主从

在使用Kubernetes(K8S)部署MySQL集群的过程中,其中一个常见需求就是搭建MySQL主从复制。主从复制是指在MySQL服务器之间进行数据同步,通常用于提高数据的可用性和容错能力。下面我将向你介绍如何使用Docker搭建MySQL主从。

整体流程如下:

| 步骤 | 操作 |
| ---- | ---- |
| 1 | 创建MySQL主服务器容器 |
| 2 | 配置主服务器 |
| 3 | 创建MySQL从服务器容器 |
| 4 | 配置从服务器 |
| 5 | 验证主从复制 |

接下来,我们一步步来实现:

步骤1:创建MySQL主服务器容器

首先,我们需要拉取MySQL的Docker镜像,并创建一个MySQL主服务器容器。

```bash
docker pull mysql:5.7 // 拉取MySQL 5.7镜像
docker run -d --name=mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql:5.7 // 创建MySQL主服务器容器
```

步骤2:配置主服务器

登录MySQL主服务器容器,并进行如下操作:

```bash
docker exec -it mysql-master bash // 进入MySQL主服务器容器
mysql -uroot -p // 输入密码
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; // 创建用于主从复制的用户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; // 授权复制权限
FLUSH PRIVILEGES; // 刷新权限
SHOW MASTER STATUS; // 查看主服务器的binlog信息
```

步骤3:创建MySQL从服务器容器

接着,我们再次拉取MySQL的Docker镜像,并创建一个MySQL从服务器容器。

```bash
docker run -d --name=mysql-slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password mysql:5.7 // 创建MySQL从服务器容器
```

步骤4:配置从服务器

登录MySQL从服务器容器,并进行如下操作:

```bash
docker exec -it mysql-slave bash // 进入MySQL从服务器容器
mysql -uroot -p // 输入密码
CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; // 配置从服务器连接主服务器的信息
START SLAVE; // 启动从服务器的复制功能
SHOW SLAVE STATUS \G; // 查看从服务器的复制状态
```

步骤5:验证主从复制

最后,我们可以在MySQL主服务器上插入数据,在MySQL从服务器上查看是否同步成功。

到此为止,我们成功搭建了MySQL主从复制。希望以上步骤对你理解如何使用Docker搭建MySQL主从有所帮助。如果有任何疑问,欢迎随时与我交流讨论。祝你学习进步!