Docker集群部署bitnami/mysql

Mysql安装
  1. 镜像

    为了方便,我直接选择了bitnami/mysql:5.7.36,说明文档:https://registry.hub.docker.com/r/bitnami/mysql

  2. docker-compose.yml

    version: '3.8'
    services:
      mysql-master:
        image: bitnami/mysql:5.7.36
        container_name: mysql-master
        restart: always
        ports:
          - '3306:3306'
        volumes:
          # 初始化数据库,只能在master节点,不需要可以删除
          - ./init.sql:/docker-entrypoint-initdb.d/init.sql
          # node1的数据卷映射
          - ./node1:/bitnami/mysql/data
        environment:
          - BITNAMI_DEBUG=true
          # 时区
          - TZ=Asia/Shanghai
          # 默认编码集
          - MYSQL_CHARACTER_SET=utf8mb4
          - MYSQL_COLLATE=utf8mb4_general_ci
          # Root密码
          - MYSQL_ROOT_PASSWORD=123456
          # 主从复制用户
          - MYSQL_REPLICATION_USER=repl-user
          # 主从复制密码
          - MYSQL_REPLICATION_PASSWORD=123456
          # 主从复制角色
          - MYSQL_REPLICATION_MODE=master
      mysql-slave:
        image: bitnami/mysql:5.7.36
        container_name: mysql-slave
        restart: always
        volumes:
          - ./node2:/bitnami/mysql/data
        ports:
          - '3307:3306'
        depends_on:
          # 分开部署可以去除该项
          - mysql-master
        environment:
          - BITNAMI_DEBUG=true
          # 时区
          - TZ=Asia/Shanghai
          # 默认编码集
          - MYSQL_CHARACTER_SET=utf8mb4
          - MYSQL_COLLATE=utf8mb4_general_ci
          # ROOT用户
          - MYSQL_ROOT_USER=root
          # Root密码
          - MYSQL_ROOT_PASSWORD=123456
          # 主从复制用户
          - MYSQL_REPLICATION_USER=repl-user
          # 主从复制密码
          - MYSQL_REPLICATION_PASSWORD=123456
          # 主从复制角色
          - MYSQL_REPLICATION_MODE=slave
          # 主节点IP地址
          - MYSQL_MASTER_HOST=192.168.246.135
          # 主节点IP端口
          - MYSQL_MASTER_PORT_NUMBER=3306
          # 主节点ROOT用户
          - MYSQL_MASTER_ROOT_USER=root
          # 主节点ROOT密码
          - MYSQL_MASTER_ROOT_PASSWORD=123456
    
  3. 部署

    1. 将准备好的文件全部上传至服务器,如以下目录

      .
      ├── docker-compose.yml # docker-compose
      ├── init.sql # 初始化SQL
      ├── node1 # node1数据卷
      └── node2 # node2数据卷
      
    2. 授权non-root

      我们选择的镜像有个特殊的地方,他在运行的时候不是root用户,而是一个non-root用户1001,因此我们需要为数据卷授权。

      注意:node1,node2文件夹,在下次需要重新初始化数据库的时候,需要删除,再创建,授权。这样才会执行初始化SQL

      $ chown -R 1001 ./node1
      $ chown -R 1001 ./node1
      $ tree -ug
      .
      ├── [root     root    ]  docker-compose.yml
      ├── [root     root    ]  init.sql
      ├── [1001     root    ]  node1
      └── [1001     root    ]  node2
      
    3. 启动容器

      docker compose up --detach --scale mysql-master=1 --scale mysql-slave=1

你可能感兴趣的:(Docker集群部署bitnami/mysql)