将 Docker Compose 变成 MySQL 主从复制利器
2023-11-06 10:35:40
在现代软件开发中,数据库是必不可少的组件。而为了确保数据的安全和可靠,我们需要对数据库进行复制,以防止单点故障。主从复制是一种常用的数据库复制方式,它将数据从主数据库同步到从数据库,从而实现数据的冗余和容灾。
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。它允许您使用YAML文件来定义您的应用,并使用一条命令来启动和停止所有容器。
使用 Docker Compose 搭建 MySQL 数据库主从复制实例非常简单,只需几个步骤即可完成。
首先,您需要创建一个名为 docker-compose.yaml 的文件,其中包含以下内容:
version: '3'
services:
mysql-master:
image: mysql:5.7
volumes:
- ./data/:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: test
mysql-slave:
image: mysql:5.7
volumes:
- ./data/:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: test
MYSQL_REPLICATION_USER: slave
MYSQL_REPLICATION_PASSWORD: password
depends_on:
- mysql-master
在该文件中,我们定义了两个容器:mysql-master 和 mysql-slave。mysql-master 是主数据库,而 mysql-slave 是从数据库。我们使用了相同的镜像来创建这两个容器,并通过 volumes 参数将数据卷挂载到容器中。
接下来,您需要创建一个名为 .env 的文件,其中包含以下内容:
MYSQL_ROOT_PASSWORD=password
MYSQL_DATABASE=test
MYSQL_REPLICATION_USER=slave
MYSQL_REPLICATION_PASSWORD=password
在该文件中,我们定义了四个环境变量:MYSQL_ROOT_PASSWORD、MYSQL_DATABASE、MYSQL_REPLICATION_USER 和 MYSQL_REPLICATION_PASSWORD。这些环境变量将在容器中被使用。
最后,您可以使用以下命令来启动 MySQL 数据库主从复制实例:
docker-compose up -d
该命令将启动 docker-compose.yaml 文件中定义的所有容器。
现在,您就可以使用以下命令来连接到主数据库:
mysql -h 127.0.0.1 -P 3306 -u root -ppassword test
您也可以使用以下命令来连接到从数据库:
mysql -h 127.0.0.1 -P 3306 -u root -ppassword test
通过使用 Docker Compose,您可以轻松地搭建 MySQL 数据库主从复制实例。这将帮助您确保数据的安全和可靠,并提高您的应用的可用性。