② 微服务环境搭建 - MySQL Docker 双主 + KeepAlived 高可用

MySQL

Docker Compose 文件

版本: 5.7

程序目录: /root/mysql

高可用方式:

  • 双主 + VIP 两个 MySQL 双主同步,一台对线上提供服务,另一台冗余以保证高可用,KeepAlived 存活探测,相同 Virtual IP 提供服务。
  • 自动故障转移:当写库挂了的时候,KeepAlived 能够探测到,会自动的进行故障转移,由于使用的是相同的virtual IP,这个切换过程对调用方是透明的。
服务器 说明 端口 读写
19.50.79.28 主库1 3000 可读可写
19.50.79.27 主库2 3000 可读可写

配置修改

mysql/master1/.envmysql/master2/.env 环境变量根据实际情况修改

MSYQL环境配置修改.png

主库 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/conf/keepalived-m1.conf 根据实际需要修改

keepalived-mysql-m1.png

cd && cd keepalived-mysql/m1 && chmod 755 -R data/ && docker-compose up -d

服务器 2 (19.50.79.27)部署:

配置文件在 keepalived-mysql/m2/conf/keepalived-m2.conf 根据实际需要修改

keepalived-mysql-m2.png

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 + 端口号

你可能感兴趣的:(② 微服务环境搭建 - MySQL Docker 双主 + KeepAlived 高可用)