② 微服务环境搭建 - MySQL Docker 双主 + Ke
2021-05-16 本文已影响0人
hdfg159
MySQL
版本: 5.7
程序目录: /root/mysql
高可用方式:
- 双主 + VIP 两个 MySQL 双主同步,一台对线上提供服务,另一台冗余以保证高可用,KeepAlived 存活探测,相同 Virtual IP 提供服务。
- 自动故障转移:当写库挂了的时候,KeepAlived 能够探测到,会自动的进行故障转移,由于使用的是相同的virtual IP,这个切换过程对调用方是透明的。
服务器 | 说明 | 端口 | 读写 |
---|---|---|---|
19.50.79.28 | 主库1 | 3000 | 可读可写 |
19.50.79.27 | 主库2 | 3000 | 可读可写 |
配置修改
MSYQL环境配置修改.png
mysql/master1/.env
和mysql/master2/.env
环境变量根据实际情况修改
主库 1 19.50.79.28
启动容器
cd && cd mysql/master1 && chmod 755 -R conf && chmod 755 -R data && docker-compose up -d
必须先启动这个,用命令
docker-compose logs -f
查看日志,等待日志出现**** port: 3306 MySQL Community Server (GPL)
启动成功才启动下一个
主库 2 19.50.79.27
启动容器
cd && cd mysql/master2 && chmod 755 -R conf && chmod 755 -R data && docker-compose up -d
查看互为主从复制是否成功
分别进入 主库 1 19.50.79.28
和 主库 2 19.50.79.27
数据库 容器
docker-compose exec mysql-master bash
两个主库分别登录数据库 root
用户
mysql -uroot -p<密码>
mysql -uroot -pUu4oOGPm5lS6bley0w5PlHh3EUm7DCQguxWF
[执行sql] 分别在两个数据库上执行sql ,查看主从状态
SHOW SLAVE STATUS \G;
期待结果: Slave_IO_Running、Slave_SQL_Running 字段值均为 YES 是成功
注意问题
- MySQL 双主情况下对任一个数据库写创建等操作都会同步到另一个数据库
KeepAlived (MySQL) 部署
部署 keepalived
案例
机器
19.50.79.28
/19.50.79.27
服务器 1 (19.50.79.28
)部署:
配置文件在
keepalived-mysql-m1.pngkeepalived-mysql/m1/conf/keepalived-m1.conf
根据实际需要修改
cd && cd keepalived-mysql/m1 && chmod 755 -R data/ && docker-compose up -d
服务器 2 (19.50.79.27
)部署:
配置文件在
keepalived-mysql-m2.pngkeepalived-mysql/m2/conf/keepalived-m2.conf
根据实际需要修改
cd && cd keepalived-mysql/m2 && chmod 755 -R data/ && docker-compose up -d
docker-compose 查看日志输出
查看 KeepAlived 主备状态,其中一个服务器日志输出是
MASTER
状态,另一个服务器日志是BACKUP
状态
docker-compose logs -f
注意问题
-
keepalived
配置必须认真修改,核对掩码位和绑定网卡是否正确 -
keepalived
如果部署成功,一台服务器keepalived
输出是MASTER
状态,另一台服务器keepalived
输出是BACKUP
状态 - 访问数据库只需要访问 VIP + 端口号