zCloud的dbPaaS能力(三):高可用管理 Part2 - MySQL
上一篇介绍了zCloud的dbPaaS能力(三):高可用管理的Oracle部分(我是传送门~),本篇再详细介绍zCloud对MySQL高可用管理的最佳实践。
一直以来,企业IT环境中的重要组件——数据库是以商业数据库为主,如Oracle、DB2、SQL Server等。随着业务移动化和互联网化的发展,及企业对技术的开源可控意识的强化,IT应用架构向微服务化转变,并由于低成本的考虑,在互联网以及金融行业,一些重要的业务开始使用新的开源架构,MySQL作为主流的开源数据库之一,在业界流行甚广。MySQL活跃的社区和使用者,造就了其生态的丰富,如,高可用的方案就有很多: MGR、主从架构、MMM、GaleraCluster ,还有中间件的高可用方案KeepAlived+HAProxy、ProxySQL、Heartbeat+SAN…
可对于企业而言,在选择方案和组件时无所适从:
- 难以选择合适的配套产品:与MySQL数据库适配的产品没有统一标准,五花八门,性能差异参差不齐,很多组件跟不上新版本升级和适配
- 难以整合维护整体环境:DBA和传统企业的运维团队,没有足够的开发力量整合开发并维护MySQL数据库运行所必须的整体环境
- MySQL的组件需要必要的二次开发和定制,以适应和满足企业自身需要
zCloud数据库云平台将最佳实践融入到对MySQL高可用的管理,并紧贴市场需要,选择了成熟稳定的数据库中间件(HAProxy、KeepAlive、ProxySQL、ShardingSphere等),满足MySQL集群的自动高可用、负载均衡、读写分离、分库分表等高级特性。同时zCloud还支持多种MySQL集群的自动化部署和管理(MGR、主从架构、MMM、GaleraCluster)。中间件加集群的方案,能够满足丰富的MySQL应用场景。MySQL高可用管理,不仅支持自动高可用切换、手动切换、数据校验,且可以快速搭建跨机房、跨地域的可靠容灾环境,帮助企业用户构建大规模的业务集群。
zCloud涉及的高可用组件和架构简介
1、高可用中间件 – HAProxy+Keepalived
zCloud使用Keepalived检测HAproxy集群中服务器的健康状况,以及实现HAproxy主备之间进行故障转移,用来防止单点故障的发生,Keepalived通过请求一个VIP来达到请求真实IP地址的功能,而VIP能够在一台机器发生故障时候,自动漂移到另外一台机器上,从来达到了高可用HA功能。
HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,zCloud使用HAproxy四层代理为ProxySQL提供高可用中间件代理。
- HAProxy作为MySQL的连接代理,属于业界主流方案,经过大量实践验证,非常成熟;
- HAProxy本身只做网络转发,不涉及任何MySQL兼容性问题,非常稳定;
- HAProxy在中间层,避免了Keepalived直接与MySQL数据库交互,可以防止由于主从脑裂导致的数据不一致
2、数据库中间件 – ProxySQL
ProxySQL能够方便地实现SQL的读写分离和负载均衡,并与其他中间件对比体现出功能丰富,易用性、兼容性等优势。
- 100%兼容MySQL和SQL语句
- 高性能,单进程支持1万以上连接;支持连接池;C语言编写性能较之Java中间件高出数倍;支持网络连接多路复用
- 自身高可用,中间件进程故障会自动启动新的进程
- 支持读写分离、查询重写和SQL流量镜像
- 支持负载均衡,也可与HAProxy结合实现负载均衡
- Query Cache功能,由于MySQL自带功能,多维度控制语句缓存方式
- 自动下线/上线后端DB
- 便捷管理,在线更改配置无需重启;详细状态统计,SQL性能和SQL语句统计等
ProxySQL | MariaDB axScale | HAProxy | Nginx | MySQL Router | |
---|---|---|---|---|---|
开源 | √ | × | √ | √ | √ |
应用层负载均衡 | √ | √ | × | × | × |
权重平衡 | √ | √ | √ | √ | √ |
MySQL主从复制 | √ | √ | √ | √ | × |
MySQL组复制 | √ | × | × | × | √ |
MySQL NDB集群 | √ | √ | × | × | × |
Galera 复制 | √ | √ | √ | √ | × |
连接池 | √ | √ | × | × | × |
前后端连接数限制 | √ | √ | √ | √ | × |
单用户连接限制 | √ | × | × | × | × |
连接复用 | √ | × | × | × | × |
毫秒级超时控制 | √ | × | √ | √ | × |
读写分离 | √ | √ | × | × | × |
分片 | √ | √ | × | × | × |
防火墙 | √ | √ | × | × | × |
查询缓存 | √ | × | × | × | × |
3、Orchestrator
go编写的MySQL高可用性和复制拓扑管理工具,支持复制拓扑结构的调整,自动故障转移和手动主从切换等。大致有如下特点:自动发现MySQL的复制拓扑、重构复制关系、检测主异常,并可以自动或手动恢复,通过Hooks进行自定义脚本。
4、MySQL主从架构
一主多从,最多支持九个从节点。便于维护和扩展。
- 成本低,部署快速方便
- 支持读写分离
- 由于同步延迟造成数据一致性问题
5、MySQL MMM架构
MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器),是关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能基于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。
MySQL本身没有提供Replication Failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。
- 安全、稳定性较高,可扩展性好
- 对服务器数量要求至少三台及以上
- 对双主(主从)复制性要求较高
- 可实现读写分离
6、Galera Cluster
Galera Cluster for MySQL是一套基于同步复制的多主MySQL集群解决方案。
- 同步复制
- 多主服务器的拓扑结构
- 可以在任意节点上进行读写
- 自动剔除故障节点
- 自动加入新节点
- 真正行级别的并发复制
- 客户端连接跟操作单台MySQL数据库的体验一致
7、MGR
MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供。MGR基于分布式paxos协议,实现组复制,保证数据一致性。内置故障检测和自动选主功能,只要不是集群中的大多数节点都宕机,就可以继续正常工作。提供单主模式与多主模式,多主模式支持多点写入。
- 避免脑裂:MGR中不会出现脑裂的现象
- 数据一致性保障:MGR的冗余能力很好,能够做到同时宕机的成员不超过半数便不会导致数据丢失,且宕机的服务器重启后,不再需要特殊的处理就可以加入组
- 多节点写入支持:多写模式下支持集群中的所有节点都可以写入
zCloud的MySQL高可用管理
接下来介绍zCloud是怎样管理MySQL高可用的。
1、高可用环境的拓扑图
下图是MySQL一主两从且使用了高可用组件的拓扑图。中间件也做了冗余,并通过VIP提供统一访问入口。
2、支持自动/手动切换
zCloud支持手动和自动的高可用切换。当主节点不可用时,集群中的某从节点会自动变为Master角色,提供读和写的服务。
zCloud支持多种数据库高可用切换模式的配置,应对企业不同场景下对高可用切换的实际需求。并能配置主从节点的读比重,和主节点的优先级设置。
- 数据完全同步后才能切换
- 切换时从节点同步最多等待时间
- 切换前检查从节点延迟超过多久不执行切换
3、中间件流量查看
zCloud支持对中间件的管理,查看中间件的连接状态。
4、支持读写分离
zCloud支持开启ProxySQL中间件的读写分离功能。
5、中间件统一管理
zCloud支持对中间件节点统一管理和维护,为DBA提供了统一的管理界面,能够一键启停、管理中间件用户、进程信息、SQL统计和连接状态。
以上便是zCloud的dbPaaS能力之MySQL高可用管理,下一篇将介绍zCloud的备份恢复管理(我是传送门~)。
zCloud目前已有众多的客户和应用实践,后续的文章依然会结合行业的真实应用给大家更形象地展示zCloud的功能设计,如果对dbPaaS平台感兴趣,可以持续关注,联系marketing@enmotech.com申请在线试用(请在邮件中备注您的姓名、电话、公司、职位和获取信息的来源,我们市场部小姐姐会第一时间联系您~)
参考:
https://www.cnblogs.com/youkanyouxiao/p/8335159.html
https://cloud.tencent.com/developer/article/1511815
附上本系列的链接,方便查阅:
1、什么是dbPaaS?
2、云和恩墨的dbPaaS:zCloud 数据库云管理平台
3、zCloud的dbPaaS能力(一):租户和资源管理
4、zCloud的dbPaaS能力(二):自动化部署
5、zCloud的dbPaaS能力(三):高可用管理 Part1 - Oracle
6、zCloud的dbPaaS能力(三):高可用管理 Part2 - MySQL
7、zCloud的dbPaaS能力(四):备份恢复管理
8、zCloud的dbPaaS能力(五):监控巡检和性能容量实战之数据库故障的一站式处理
9、zCloud的dbPaaS能力(六):SQL变更管理
10、zCloud的dbPaaS平台案例集锦