MySQL高可用架构详解与实践
在现代企业级应用中,数据库的高可用性是确保业务连续性的关键。MySQL作为广泛使用的开源数据库,提供了多种高可用解决方案。本文将详细介绍MySQL的高可用架构,包括复制拓扑结构、多线程复制性能调优,以及MMM和MHA架构的介绍和搭建过程。
一、什么是高可用架构
高可用性(High Availability)是指通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。具体来说,高可用架构需要解决以下问题:
-
严重的主从延迟:主从复制延迟可能导致数据不一致。
-
主从复制中断:复制链路中断会影响数据的完整性和可用性。
-
锁引起的大量阻塞:长时间的锁操作会降低系统性能。
如何实现高可用
-
避免导致系统不可用的因素,减少系统不可用的时间:
-
服务器磁盘空间耗尽:定期监控磁盘空间,及时清理不必要的文件和日志。
-
性能糟糕的SQL:优化SQL查询,使用合适的索引。
-
表结构和索引没有优化:定期检查和优化表结构和索引。
-
主从数据不一致:使用强一致性的复制策略,如GTID。
-
人为的操作失误:建立完善的监控和报警系统,进行操作审计。
-
-
增加系统冗余,保证发生系统不可用时可以尽快恢复:
-
避免单点故障:使用多主或多从架构,确保没有单点故障。
-
主从切换及故障转移:自动或手动进行主从切换,确保服务的连续性。
-
-
解决方案

单点故障:

如何避免单点故障:

但是共享存储本身可能也是一个单点,而且恢复起来会很麻烦,所以共享存储并不是一个好的解决方案
DRDB:如果是由于磁盘文件造成的问题那么将无法解决,而且成本比较高,所以也不是一个好的解决方案

利用多写集群或者NDB集群来解决MySQL单点故障
对于一个事务来说,只有当

pxc只支持使用innodb的存储引擎使用
利用MySQL主从复制来解决MySQL单点故障

二、MySQL复制拓扑结构及多线程复制性能调优
(一)复制拓扑结构
MySQL的复制拓扑结构主要包括主从复制(Master-Slave)和主主复制(Master-Master)两种形式。
-
主从复制:
-
架构:一个主服务器(Master)和多个从服务器(Slave)。
-
优点:读写分离,提高读性能。
-
缺点:单点故障,主服务器故障会导致整个系统不可用。
-
-
主主复制:
-
架构:两个主服务器相互复制,可以同时对外提供服务。
-
优点:高可用性,无单点故障。
-
缺点:数据冲突和同步延迟问题。
-
(二)多线程复制性能调优
多线程复制(Parallel Replication)可以显著提高复制的性能,特别是在多核CPU和高并发环境下。
-
配置多线程复制:
-
设置复制线程数:在从服务器上设置
slave_parallel_workers参数,指定并行复制的线程数。 -
优化复制过滤:使用复制过滤(Replication Filter)减少不必要的复制操作。
-
-
监控复制状态:
-
使用
SHOW SLAVE STATUS命令:定期检查复制状态,确保复制链路正常。 -
监控复制延迟:使用
Seconds_Behind_Master参数监控复制延迟,及时发现和解决问题。
-
三、MMM架构
(一)MMM的主要作用
MMM(Multi-Master Replication Manager)是一个用于监控和管理MySQL主主复制拓扑的工具,能够在当前主服务器失效时,自动进行主从切换和故障转移。
(二)MMM提供的功能
-
监控MySQL主从复制状态:实时监控主从复制的健康状况。
-
自动故障转移:在主库出现宕机时,自动进行故障转移并重新配置复制链路。
-
虚拟IP管理:提供多个读的虚拟IP和一个写的虚拟IP,自动迁移虚拟IP以确保服务的连续性。
主动主动模式的主主复制:有两个服务器对外提供服务
主动被动模式的主主复制:只有一台对外提供服务
(三)MMM架构
MMM架构在每个主服务器和从服务器上安装监控组件,监控每台服务器的状态。MMM只能工作在主主复制的主备复制中,除了活动的主服务器外,其他服务器需要设置为read only。

MMM部署所需要的资源:

(四)MMM部署步骤

-
安装MMM:
-
配置YUM源:在所有节点上配置MMM的YUM源。
-
安装MMM包:安装MMM的代理包和监控包。
-
-
配置MMM:
-
创建监控账号:在主服务器上创建监控账号,这些账号会自动同步到其他服务器。
-
配置MMM:编辑MMM的配置文件,指定主从服务器的IP地址、虚拟IP等信息。
-
-
启动MMM服务:
-
启动监控服务:在监控节点上启动MMM监控服务。
-
启动代理服务:在所有节点上启动MMM代理服务。
-
(五)MMM的优缺点
优点
-
开源:使用Perl脚本语言开发,完全开源。
-
读写VIP:提供读写虚拟IP,使服务器角色的变更对前端应用透明。
-
延迟监控:提供从服务器的延迟监控。
-
故障转移:提供主数据库故障转移后从服务器对新主的重新同步功能。
-
易于恢复:很容易对发生故障的主数据库重新上线。
缺点
-
不支持新功能:发布时间较早,不支持MySQL的新复制功能,如GTID。
-
无读负载均衡:没有读负载均衡的功能。
-
数据丢失风险:在进行主从切换时,容易造成数据丢失。
-
单点故障:MMM监控服务存在单点故障。
MMM演示拓扑图:

四、MHA架构
(一)MHA架构介绍
MHA(Master High Availability)是一个用于实现MySQL高可用性的工具,能够最大程度保证数据的一致性,达到真正意义上的高可用。

(二)MHA提供的功能
监控主数据库服务器是不是可用,当主DB不可用的时候,从多个从服务器里面选举出新的主数据库服务器,提供了主从切换和故障转移功能

-
监控主数据库服务器:实时监控主数据库服务器的可用性。
-
故障转移:当主数据库服务器不可用时,从多个从服务器中选举出新的主数据库服务器,并进行主从切换和故障转移。
-
数据同步:在备选主服务器和其他从服务器之间同步差异二进制数据,确保数据一致性。
(三)MHA是如何进行主从切换的
-
保存二进制日志:尝试从出现故障的主数据库保存最新的二进制日志。
-
选举新的主服务器:从多个备选的从服务器中选举出新的备选主服务器。
-
同步差异数据:在备选主服务器和其他从服务器之间同步差异二进制数据。
-
应用二进制日志:应用从原主数据库服务器保存的二进制日志。
-
提升备选主服务器:提升备选主服务器为新的主数据库服务器。
-
迁移从服务器:迁移集群中的其他从服务器作为新的主数据库的从服务器。

(四)MHA配置步骤


-
安装MHA:
-
配置YUM源:在所有节点上配置MHA的YUM源。
-
安装MHA包:安装MHA的Node包和Manager包。
-
-
配置MHA:
-
创建配置文件:编辑MHA的配置文件,指定主从服务器的IP地址、用户和密码等信息。
-
配置SSH免密登录:在所有节点上配置SSH免密登录,确保MHA可以无密码访问各节点。
-
-
启动MHA服务:
-
启动Manager服务:在监控节点上启动MHA Manager服务。
-
启动Node服务:在所有节点上启动MHA Node服务。
-
(五)MHA的优缺点

MHA架构演示实例






五、根据拓扑图先建立主主复制







[MySql的高可用之路--6.MySQL的复制拓扑结构及多线程复制性能调优以及MMM架构的介绍及搭建过程_mysql的主-主拓扑结构,分配给每台服务器的读负载应该低于30%-优快云博客](https://blog.youkuaiyun.com/qq_37909508/article/details/94960829)
六. 读写分离和负载均衡










1685

被折叠的 条评论
为什么被折叠?



