Skip to main content
Version: v22.10

MySQL

假设有如下服务器用于设置 MySQL 主从:

  • MySQL 服务器:192.168.1.4 用于作为主库(以下简称 MySQL Master)
  • MySQL 服务器:192.168.1.5 用于作为从库(以下简称 MySQL Slave)

1. 配置 MySQL Master#

登录 MySQL Master 192.168.1.4 并切换至工作目录

cd /data/tencent-survey-v22.10.1-amd64

修改 docker-compose-pass.yaml 文件,services 部分仅保留以下配置

services:  mysql-server:    privileged: ${PRIVILEGED}    networks:      - wj-net    restart: always    image: "${IMAGE_MYSQL}"    container_name: mysql-server    volumes:      # Config      #- ./etc/mysql/my.cnf:/etc/mysql/conf.d/my.cnf      - ./etc/mysql/my.cnf:/etc/my.cnf      # Data      - ./var/lib/mysql/:/var/lib/mysql/    environment:      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}      TZ: Asia/Shanghai    command: --default-authentication-plugin=mysql_native_password    ports:      - 3306:3306    healthcheck:      test: ["CMD", "mysqladmin", "-h", "localhost", "-p$MYSQL_ROOT_PASSWORD", "ping"]      timeout: 20s      retries: 10

2. 配置 MySQL Slave#

登录 MySQL Slave 192.168.1.5 并切换至工作目录

cd /data/tencent-survey-v22.10.1-amd64

修改 docker-compose-pass.yaml 文件,services 部分仅保留以下配置

services:    mysql-server:        privileged: ${PRIVILEGED}        networks:            - wj-net        restart: always        image: "${IMAGE_MYSQL}"        container_name: mysql-server        volumes:            # Config            #- ./etc/mysql/my.cnf:/etc/mysql/conf.d/my.cnf            - ./etc/mysql/my.cnf:/etc/my.cnf            # Data            - ./var/lib/mysql/:/var/lib/mysql/        environment:            MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}            TZ: Asia/Shanghai        command: --default-authentication-plugin=mysql_native_password        ports:            - 3306:3306        healthcheck:            test: ["CMD", "mysqladmin", "-h", "localhost", "-p$MYSQL_ROOT_PASSWORD", "ping"]            timeout: 20s            retries: 10

3. 启动 MySQL Slave#

TODO

4. 修改数据库连接地址#

登录所有应用服务器并切换至工作目录,修改 .env 中以下配置为 MySQL Master 的实际连接信息:

MAIN_HOST=mysql-server:3306MAIN_DATABASE=ur_mainMAIN_USERNAME=rootMAIN_PASSWORD=$MYSQL_ROOT_PASSWORD
# answer shard1DB2_HOST=mysql-server:3306DB2_DATABASE=new_urDB2_USERNAME=rootDB2_PASSWORD=$MYSQL_ROOT_PASSWORD
# answer shard2DB3_HOST=mysql-server:3306DB3_DATABASE=new_urDB3_USERNAME=rootDB3_PASSWORD=$MYSQL_ROOT_PASSWORD
# answer shard3DB6_HOST=mysql-server:3306DB6_DATABASE=new_urDB6_USERNAME=rootDB6_PASSWORD=$MYSQL_ROOT_PASSWORD
# answer shard4DB7_HOST=mysql-server:3306DB7_DATABASE=new_urDB7_USERNAME=rootDB7_PASSWORD=$MYSQL_ROOT_PASSWORD

注意,需要在所有应用服务器中重复执行

修改完成后,使用以下命令重启所有应用服务:

docker compose -f docker-compose.yaml restart