0
点赞
收藏
分享

微信扫一扫

docker-compose bitnami mysql 8.0 主从自动复制配置

要在Docker Compose中使用Bitnami MySQL 8.0配置主从自动复制,并启用二进制日志记录、使用行级复制格式以及将从服务器设置为只读模式,可以按照以下步骤进行操作:

  1. 创建一个名为docker-compose.yml的文件,并在其中定义两个MySQL服务:一个主服务器和一个从服务器。


version: '3'

services:
  master:
    image: 'bitnami/mysql:8.0'
    container_name: mysql_master
    environment:
      - MYSQL_ROOT_PASSWORD=my_root_password
      - MYSQL_REPLICATION_MODE=master
      - MYSQL_REPLICATION_USER=my_repl_user
      - MYSQL_REPLICATION_PASSWORD=my_repl_password
    volumes:
      - ./master_data:/bitnami/mysql/data
      - ./master_conf:/bitnami/mysql/conf
    ports:
      - '3306:3306'

  slave:
    image: 'bitnami/mysql:8.0'
    container_name: mysql_slave
    environment:
      - MYSQL_ROOT_PASSWORD=my_root_password
      - MYSQL_REPLICATION_MODE=slave
      - MYSQL_REPLICATION_USER=my_repl_user
      - MYSQL_REPLICATION_PASSWORD=my_repl_password
      - MYSQL_MASTER_HOST=master
      - MYSQL_MASTER_PORT_NUMBER=3306
      - MYSQL_SLAVE_READ_ONLY=true
    volumes:
      - ./slave_data:/bitnami/mysql/data
      - ./slave_conf:/bitnami/mysql/conf
    depends_on:
      - master

在上面的示例中,我们添加了两个卷./master_conf./slave_conf,用于挂载主服务器和从服务器的自定义配置文件。这将允许我们在容器中使用自定义配置。

  1. 创建两个目录master_dataslave_data,用于持久化存储MySQL数据。
  2. master_conf目录中创建一个名为my.cnf的文件,并添加以下内容:

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW

在上面的配置中,我们启用了二进制日志记录,并将复制格式设置为行级。

  1. slave_conf目录中创建一个名为my.cnf的文件,并添加以下内容:


[mysqld]
server-id = 2
log-bin = mysql-bin
binlog-format = ROW
read-only = 1

在上面的配置中,我们启用了二进制日志记录,并将复制格式设置为行级。还将从服务器设置为只读模式。

  1. 使用以下命令启动容器:


docker-compose up -d

现在,您已经设置了一个具有主从自动复制功能的Bitnami MySQL 8.0容器集群,并启用了二进制日志记录、使用行级复制格式,并将从服务器设置为只读模式。

请确保在docker-compose.yml文件中将my_root_passwordmy_repl_usermy_repl_password替换为实际的值。此外,还可以根据需要进行其他自定义配置,例如挂载卷、网络设置等。

注意:在Docker Compose环境中,容器之间的通信使用服务名称作为主机名。因此,我们在从服务器的环境变量中将MYSQL_MASTER_HOST设置为master,这将自动解析为主服务器的IP地址。

举报

相关推荐

0 条评论