- 下面的架构是双主同步+各自有从节点
下载
docker pull mishamx/mysql docker tag mishamx/mysql rep docker rmi mishamx/mysql
创建容器
主节点
docker run -d -p 9003:3306 \-e MYSQL_MASTER_PORT=3306 \-e MYSQL_ROOT_PASSWORD=root \-e MYSQL_REPLICATION_USER=backup \-e MYSQL_REPLICATION_PASSWORD=backup \-v rnv1:/var/lib/mysql \--privileged \--name rn1 \--net=<虚拟网络> rep
配置文件
/etc/mysql/my.cnf[mysq1d]character_set_server=utf8mb4# 要不同server_id=1001log_bin=mysql_binrelay_log=relay_bin# 由于双主节点互相同步,互相为 slave## 表示 slave 将复制事件写进自己的二进制日志log-slave-updates=1# 数据同步模式## 不指定引擎时,默认使用 Innodb 引擎## 一个事务中,有 sql 执行错误,则回滚事务sq1_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
从节点
docker run -d -p 9004:3306 \-e MYSQL_MASTER_HOST=rn1 \-e MYSQL_MASTER_PORT=3306 \-e MYSQL_ROOT_PASSWORD=root \-e MYSQL_REPLICATION_USER=backup \-e MYSQL_REPLICATION_PASSWORD=backup \-v rnv2:/var/lib/mysql \--privileged \--name rn2 \--net=<主节点同一个虚拟网络> rep
- 修改了
--name - 就多了
MYSQL_MASTER_HOST
配置文件
/etc/mysql/my.cnf[mysqld]server_id=1003character_set_server=utf8mb4log_bin=mysql_bin# 表示 slave 将复制事件写进自己的二进制日志relay_log=relay_bin# 只读read-only=1
配置主从同步
- 各个从分别同步各自的主
- 双主配置互相同步
stop slave;change master to-- swarm 网络可能会变化,所以设置 docker 名即可master_host='rn1',master_port=3306,master_use r='backup',master_password='backup';
注意点
主节点宕机
- 主从同步失效,但是从节点可读
**
