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:3306
MAIN_DATABASE=ur_main
MAIN_USERNAME=root
MAIN_PASSWORD=$MYSQL_ROOT_PASSWORD

# answer shard1
DB2_HOST=mysql-server:3306
DB2_DATABASE=new_ur
DB2_USERNAME=root
DB2_PASSWORD=$MYSQL_ROOT_PASSWORD

# answer shard2
DB3_HOST=mysql-server:3306
DB3_DATABASE=new_ur
DB3_USERNAME=root
DB3_PASSWORD=$MYSQL_ROOT_PASSWORD

# answer shard3
DB6_HOST=mysql-server:3306
DB6_DATABASE=new_ur
DB6_USERNAME=root
DB6_PASSWORD=$MYSQL_ROOT_PASSWORD

# answer shard4
DB7_HOST=mysql-server:3306
DB7_DATABASE=new_ur
DB7_USERNAME=root
DB7_PASSWORD=$MYSQL_ROOT_PASSWORD

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

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

docker compose -f docker-compose.yaml restart