返回
Docker-Compose构建Mysql集群:一主一从,轻松搞定
后端
2023-04-20 12:05:42
使用 Docker-Compose 搭建 MySQL 主从复制集群:详细指南
准备工作
为了在 Docker 环境中建立 MySQL 主从复制集群,我们需要完成以下准备工作:
- 安装 Docker 和 Docker-Compose: 确保你的系统中已经安装了 Docker 和 Docker-Compose,可以通过官方网站获取安装指南。
- 准备 MySQL 镜像: 使用官方提供的 MySQL 镜像或选择你需要的特定版本。
创建 Docker-Compose 文件
Docker-Compose 文件定义了集群的配置,用于启动和管理容器。创建一个名为 docker-compose.yml
的文件,并添加以下内容:
version: '3.7'
services:
master:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: db
volumes:
- mysql-data:/var/lib/mysql
slave:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: db
volumes:
- mysql-data:/var/lib/mysql
depends_on:
- master
volumes:
mysql-data:
- master: 主库容器的配置。
- slave: 从库容器的配置。
- MYSQL_ROOT_PASSWORD: 数据库 root 用户的密码。
- MYSQL_DATABASE: 要创建的数据库名称。
- volumes: 挂载容器中的数据目录到宿主机的 mysql-data 目录,确保数据的持久性。
配置 MySQL
为了配置 MySQL,我们需要执行以下步骤:
- 创建 conf 文件夹: 创建一个名为
conf
的文件夹,并将my.cnf
文件复制到其中。 - 配置 my.cnf 文件: 在
my.cnf
文件中添加以下内容:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=db
- server-id: 数据库的唯一标识符。
- log-bin: 开启二进制日志。
- binlog-do-db: 指定要复制的数据库。
- 复制 init.sql 文件: 将
init
文件夹中的init.sql
文件复制到容器中。
启动集群
运行 docker-compose up -d
命令启动集群。使用 docker ps
命令检查容器是否正在运行。
测试集群
- 连接到主库并创建表:
CREATE TABLE table1 (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255), PRIMARY KEY (id));
- 连接到从库并查看表:
SHOW TABLES;
如果从库中可以看到 table1
表,则表示集群配置成功。
常见问题
1. 从库无法连接到主库: 检查主库的 IP 地址是否正确,并且主库已开启二进制日志。
2. 从库无法复制数据: 检查从库的配置文件是否正确,并且从库已启动复制线程。
3. 如何修改 root 密码: 停止集群,编辑 docker-compose.yml
文件,修改 MYSQL_ROOT_PASSWORD
环境变量,然后重新启动集群。
4. 如何添加更多从库: 编辑 docker-compose.yml
文件,添加更多 slave
服务,并将其 depends_on
设置为 master
。
5. 如何备份数据: 使用 docker exec
命令将数据导出到文件或使用 MySQL 备份工具。
总结
使用 Docker-Compose 在 Docker 环境中部署 MySQL 主从复制集群是一种简单有效的方法。这种方法对于高可用性架构和分布式应用程序场景非常有用。通过遵循本指南,你可以轻松地建立一个健壮且可靠的 MySQL 集群。