返回

将 Docker Compose 变成 MySQL 主从复制利器

开发工具

在现代软件开发中,数据库是必不可少的组件。而为了确保数据的安全和可靠,我们需要对数据库进行复制,以防止单点故障。主从复制是一种常用的数据库复制方式,它将数据从主数据库同步到从数据库,从而实现数据的冗余和容灾。

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 数据库主从复制实例。这将帮助您确保数据的安全和可靠,并提高您的应用的可用性。