MySQL高可用架构详解与实践

MySQL高可用架构详解与实践

在现代企业级应用中,数据库的高可用性是确保业务连续性的关键。MySQL作为广泛使用的开源数据库,提供了多种高可用解决方案。本文将详细介绍MySQL的高可用架构,包括复制拓扑结构、多线程复制性能调优,以及MMM和MHA架构的介绍和搭建过程。

一、什么是高可用架构

高可用性(High Availability)是指通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。具体来说,高可用架构需要解决以下问题:

  1. 严重的主从延迟:主从复制延迟可能导致数据不一致。

  2. 主从复制中断:复制链路中断会影响数据的完整性和可用性。

  3. 锁引起的大量阻塞:长时间的锁操作会降低系统性能。

如何实现高可用

  1. 避免导致系统不可用的因素,减少系统不可用的时间

    • 服务器磁盘空间耗尽:定期监控磁盘空间,及时清理不必要的文件和日志。

    • 性能糟糕的SQL:优化SQL查询,使用合适的索引。

    • 表结构和索引没有优化:定期检查和优化表结构和索引。

    • 主从数据不一致:使用强一致性的复制策略,如GTID。

    • 人为的操作失误:建立完善的监控和报警系统,进行操作审计。

  2. 增加系统冗余,保证发生系统不可用时可以尽快恢复

    • 避免单点故障:使用多主或多从架构,确保没有单点故障。

    • 主从切换及故障转移:自动或手动进行主从切换,确保服务的连续性。

  3. 解决方案

单点故障:

如何避免单点故障:

 但是共享存储本身可能也是一个单点,而且恢复起来会很麻烦,所以共享存储并不是一个好的解决方案

DRDB:如果是由于磁盘文件造成的问题那么将无法解决,而且成本比较高,所以也不是一个好的解决方案

利用多写集群或者NDB集群来解决MySQL单点故障

对于一个事务来说,只有当

pxc只支持使用innodb的存储引擎使用

利用MySQL主从复制来解决MySQL单点故障

二、MySQL复制拓扑结构及多线程复制性能调优

(一)复制拓扑结构

MySQL的复制拓扑结构主要包括主从复制(Master-Slave)和主主复制(Master-Master)两种形式。

  1. 主从复制

    • 架构:一个主服务器(Master)和多个从服务器(Slave)。

    • 优点:读写分离,提高读性能。

    • 缺点:单点故障,主服务器故障会导致整个系统不可用。

  2. 主主复制

    • 架构:两个主服务器相互复制,可以同时对外提供服务。

    • 优点:高可用性,无单点故障。

    • 缺点:数据冲突和同步延迟问题。

(二)多线程复制性能调优

多线程复制(Parallel Replication)可以显著提高复制的性能,特别是在多核CPU和高并发环境下。

  1. 配置多线程复制

    • 设置复制线程数:在从服务器上设置slave_parallel_workers参数,指定并行复制的线程数。

    • 优化复制过滤:使用复制过滤(Replication Filter)减少不必要的复制操作。

  2. 监控复制状态

    • 使用SHOW SLAVE STATUS命令:定期检查复制状态,确保复制链路正常。

    • 监控复制延迟:使用Seconds_Behind_Master参数监控复制延迟,及时发现和解决问题。

三、MMM架构

(一)MMM的主要作用

MMM(Multi-Master Replication Manager)是一个用于监控和管理MySQL主主复制拓扑的工具,能够在当前主服务器失效时,自动进行主从切换和故障转移。

(二)MMM提供的功能

  1. 监控MySQL主从复制状态:实时监控主从复制的健康状况。

  2. 自动故障转移:在主库出现宕机时,自动进行故障转移并重新配置复制链路。

  3. 虚拟IP管理:提供多个读的虚拟IP和一个写的虚拟IP,自动迁移虚拟IP以确保服务的连续性。

主动主动模式的主主复制:有两个服务器对外提供服务

主动被动模式的主主复制:只有一台对外提供服务

(三)MMM架构

MMM架构在每个主服务器和从服务器上安装监控组件,监控每台服务器的状态。MMM只能工作在主主复制的主备复制中,除了活动的主服务器外,其他服务器需要设置为read only

MMM部署所需要的资源:

(四)MMM部署步骤

  1. 安装MMM

    • 配置YUM源:在所有节点上配置MMM的YUM源。

    • 安装MMM包:安装MMM的代理包和监控包。

  2. 配置MMM

    • 创建监控账号:在主服务器上创建监控账号,这些账号会自动同步到其他服务器。

    • 配置MMM:编辑MMM的配置文件,指定主从服务器的IP地址、虚拟IP等信息。

  3. 启动MMM服务

    • 启动监控服务:在监控节点上启动MMM监控服务。

    • 启动代理服务:在所有节点上启动MMM代理服务。

(五)MMM的优缺点

优点
  1. 开源:使用Perl脚本语言开发,完全开源。

  2. 读写VIP:提供读写虚拟IP,使服务器角色的变更对前端应用透明。

  3. 延迟监控:提供从服务器的延迟监控。

  4. 故障转移:提供主数据库故障转移后从服务器对新主的重新同步功能。

  5. 易于恢复:很容易对发生故障的主数据库重新上线。

缺点
  1. 不支持新功能:发布时间较早,不支持MySQL的新复制功能,如GTID。

  2. 无读负载均衡:没有读负载均衡的功能。

  3. 数据丢失风险:在进行主从切换时,容易造成数据丢失。

  4. 单点故障:MMM监控服务存在单点故障。

MMM演示拓扑图:

四、MHA架构

(一)MHA架构介绍

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

(二)MHA提供的功能

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

  1. 监控主数据库服务器:实时监控主数据库服务器的可用性。

  2. 故障转移:当主数据库服务器不可用时,从多个从服务器中选举出新的主数据库服务器,并进行主从切换和故障转移。

  3. 数据同步:在备选主服务器和其他从服务器之间同步差异二进制数据,确保数据一致性。

(三)MHA是如何进行主从切换的

  1. 保存二进制日志:尝试从出现故障的主数据库保存最新的二进制日志。

  2. 选举新的主服务器:从多个备选的从服务器中选举出新的备选主服务器。

  3. 同步差异数据:在备选主服务器和其他从服务器之间同步差异二进制数据。

  4. 应用二进制日志:应用从原主数据库服务器保存的二进制日志。

  5. 提升备选主服务器:提升备选主服务器为新的主数据库服务器。

  6. 迁移从服务器:迁移集群中的其他从服务器作为新的主数据库的从服务器。

(四)MHA配置步骤

  1. 安装MHA

    • 配置YUM源:在所有节点上配置MHA的YUM源。

    • 安装MHA包:安装MHA的Node包和Manager包。

  2. 配置MHA

    • 创建配置文件:编辑MHA的配置文件,指定主从服务器的IP地址、用户和密码等信息。

    • 配置SSH免密登录:在所有节点上配置SSH免密登录,确保MHA可以无密码访问各节点。

  3. 启动MHA服务

    • 启动Manager服务:在监控节点上启动MHA Manager服务。

    • 启动Node服务:在所有节点上启动MHA Node服务。

(五)MHA的优缺点

MHA架构演示实例

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

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

六. 读写分离和负载均衡

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值