MySQL Group Replication的高可用实现

作者简介:沈嵬,现就职于北京海天起点技术服务股份有限公司,具有多年oracle数据库维护经验,有11G OCP认证,致力于帮助客户解决生产环境出现的各种问题。

概述

MySQL组复制功能集成了组管理服务,当primary节点意外宕机或者下线,组内会发起选举,把一个可用的读节点提升为primary节点。虽然实现了组内成员的自动化管理,但存在数据库IP地址发生变化的问题。

MySQL Router为数据库集群提供一个虚拟IP作为应用程序单一连接点,实现了负载均衡, 读写分离, 故障转移的数据库高可用功能,但自身没有HA。

keepalived软件能解决MySQL Router的Failover问题。


系统环境

主机名 IP 软件
mgr1 192.168.1.31 MySQL 5.7.22 配置Group Replication
mgr2 192.168.1.32 MySQL 5.7.22 配置Group Replication
mgr3 192.168.1.33 MySQL 5.7.22 配置Group Replication
mgr4 192.168.1.34 keepalived+MySQL Router+MySQL Shell
mgr5 192.168.1.35 keepalived+MySQL Router+MySQL Shell

MGR配置

数据库安装以及组复制过程略,mgr1、mgr2、mgr3三台主机配置了single-primary模式MGR。

MySQL Shell配置

解压缩软件:

创建数据库用户:

创建集群:

执行var cluster = dba.createCluster(‘myCluster’)成功后会自动创建一个新的数据库: mysql_innodb_cluster_metadata, 用于存放集群的元数据, 该元数据会被MySQL Router用到, 以实现高可用性。

MySQL Router配置

mgr5做同样操作,这样这两台机器都提供了集群统一访问入口

接下来通过keepalived实现MySQL Router的HA,提供一个虚拟IP作为应用统一访问地址。

keepalived配置

在mgr4,mgr5上安装keepalived

内容分别如下:

生成136.160.1.36虚拟IP

测试

正常

正常通过VIP可以通过不同端口连接读写和只读节点

如果mgr2和mgr3全关闭了使用6447端口连接那就报错了

两台部署了MySQL Router的主机任意一台关闭不影响访问,高可用实现。

报错处理

报错处理1

报错:

解决:

报错处理2

报错:

/app/myrouter/start.sh 执行无效,当前目录无法生成.sock文件,ps -ef|grep router显示无进程

解决:

删除mysqlrouter.pid后重新执行

报错处理3

报错:

解决:

重启router

未经允许不得转载:Oracle一体机用户组 » MySQL Group Replication的高可用实现

相关推荐