环境准备:
具备docker+docker-compose环境的服务器4台
192.168.100.231
192.168.100.232
192.168.100.241
192.168.100.242
实现目标:
(1)192.168.100.241 和 192.168.100.242上分别安装mysql-master和myql-slave,并且mysql-master负责写,myql-slave负责读,实现读写分离
(2) 192.168.100.231 和 192.168.100.232各安装一个proxysql(使用proxysql-cluster组成集群)
参考链接:
https://github.com/bergerx/docker-mysql-replication
https://github.com/sysown/proxysql/wiki
https://hub.docker.com/r/severalnines/proxysql/
一、安装mysql-replication实现主从同步
(1) 在 192.168.100.241上安装mysql-master, docker-compose.yml如下
version: '2.1'
services:
master:
image: bergerx/mysql-replication:5.6
network_mode: "host"
restart: always
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "1"
MYSQL_DATABASE: "test_db"
volumes:
- "/etc/timezone:/etc/timezone:ro"
- "/etc/localtime:/etc/localtime:ro"
command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
使用docker-compose up -d启动 (对docker-compose不熟悉的,这边稍微提示一下,docker-compose命令需要在docker-compose.yml同级目录下执行,因为它默认使用当前目录下的docker-compose.yml)
(2) 在 192.168.100.242上安装mysql-slave, docker-compose.yml如下
version: '2'
services:
slave:
image: bergerx/mysql-replication:5.6
restart: always
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "1"
MASTER_HOST: "192.168.100.241"
MASTER_PORT: 3306
volumes:
- "/etc/timezone:/etc/timezone:ro"
- "/etc/localtime:/etc/localtime:ro"
network_mode: host
command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
使用docker-compose up -d启动
(3)验证主从同步效果
从上面的配置我们可以看到,master默认创建了test_db数据库,这时只需要检查slave上是否也有test_db数据库即