MySQL 双主双从实现读写分离
本节是基于上一节继续扩展,基于Docker 实现MySQL 2主2从(读写分离)
一、2 主 2从架构解析
1.两台mysql都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用;
2.masterA是masterB的主库,masterB又是masterA的主库,它们互为主从;
3.两台主库之间做高可用,可以采用keepalived等方案(使用VIP对外提供服务);
4.所有提供服务的从服务器与masterB进行主从同步(双主多从);
架构简易图如下:
服务节点 | 节点状态 |
---|---|
192.168.190.165 | 既是主节点也是从节点,与183互为主从 |
192.168.190.183 | 既是主节点也是从节点,与165互为主从 |
192.168.190.184 | 是183的从节点 |
192.168.190.185 | 是165的从节点 |
二、主节点配置
这里是对 192.168.190.165 和 192.168.190.183 2个互为主从的主节点 做统一的配置
1.1. 编写docker-compose.yml 文件
- 创建目录 mkdir /usr/local/docker/mysql/
- cd /usr/local/docker/mysql/ && mkdir data conf
- vim docker-compose.yml
version: '3.1'
services:
mysql:
restart: always
image: mysql:5.7
container_name: mysql
ports:
- 3306:3306
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
command:
--character-set-server=utf8mb4
--<