- 前言
- 为什么要写这本书
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第一部分 安全运维篇
- 第 1 章 Linux 服务器安全运维
- 第 2 章 Linux 网络安全运维
- 第 3 章 数据安全工具 DRBD、extundelete
- 第二部分 运维故障排查篇
- 第 4 章 Linux 系统运维故障排查思路
- 第 5 章 Linux 故障排查案例实战
- 第三部分 自动化运维篇
- 第 6 章 轻量级运维利器 pssh、pdsh 和 mussh
- 第 7 章 分布式监控系统 Ganglia
- 第 8 章 基于 nagios 的分布式监控报警平台 Centreon
- 第 9 章 通过 Ganglia 与 Centreon 构建智能化监控报警平台
- 第四部分 集群架构篇
- 第 10 章 高性能 Web 服务器 Nginx
- 第 11 章 高性能集群软件 Keepalived
- 第 12 章 千万级高并发负载均衡软件 HAProxy
- 第 13 章 构建高性能的 MySQL 集群系统
- 第 14 章 高性能负载均衡集群软件 HAProxy
13.1 常见的高可用 MySQL 解决方案
数据库作为最基础的数据存储服务之一,在存储系统中有着非常重要的地位,因此要求其具备高可用性无可厚非。能实现不同 SLA(服务水平协定)的解决方案有很多种,这些方案可以保证数据库服务器在硬件或软件出现故障时服务继续可用。
高可用性需要解决的主要问题有两个,一个是如何实现数据共享或同步数据,另一个是如何处理 failover。数据共享一般的解决方案是通过 SAN(Storage Area Network)来实现,而数据同步可以通过 rsync 软件或 DRBD 技术来实现。failover 的意思是指当服务器死机或出现错误时可以自动切换到其他备用服务器,不影响服务器上业务系统的运行。本章重点介绍目前比较成熟的 MySQL 高可用解决方案。
13.1.1 主从复制解决方案
这是 MySQL 自身提供的一种高可用解决方案,数据同步方法采用的是 MySQL replication 技术。MySQL replication 技术就是一个日志的复制过程,在复制过程中一台服务器充当主服务器,而一台或多台其他服务器充当从服务器,简单说就是,从服务器到主服务器拉取二进制日志文件,然后再将日志文件解析成相应的 SQL 在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。
MySQL replication 技术仅仅提供了日志的同步执行功能,而从服务器只能提供读操作,并且当主服务器发生故障时,必须手动处理 failover,通常的做法是将一台从服务器更改为主服务器。这种解决方案在一定程度上实现了 MySQL 的高可用性,可以实现 90.000%的 SLA。
为了达到更高的可用性,在实际的应用环境中,一般都采用 MySQL replication 技术配合高可用集群软件来实现自动 failover,这种方式可以实现 95.000%的 SLA。13.2 节会重点介绍通过 Keepalived 结合 MySQL replication 技术实现 MySQL 高可用架构的解决方案。
13.1.2 MMM 高可用解决方案
MMM(Master-Master Replication Manager for MySQL)MySQL 主主复制管理器,提供了 MySQL 主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件。在 MMM 高可用解决方案中,典型的应用是双主多从架构,通过 MySQL replication 技术可以实现两台服务器互为主从,且在任何时候只有一个节点可以写入,避免多点写入的数据冲突。同时,当可写的主节点故障时,MMM 套件可以立刻监控到,然后将服务自动切换到另一个主节点,继续提供服务,从而实现 MySQL 的高可用。
MMM 方案是目前比较成熟的 MySQL 高可用解决方案,可以实现 99.000%的 SLA。13.3 节会重点介绍通过 MMM 实现 MySQL 高可用解决方案。
13.1.3 Heartbeat/SAN 高可用解决方案
此解决方案是借助第三方软硬件实现的,在这个方案中,处理 failover 的方式是高可用集群软件 Heartbeat,它监控和管理各个节点间连接的网络,并监控集群服务,当节点出现故障或者服务不可用时,自动在其他节点启动集群服务。
在数据共享方面,通过 SAN 存储来共享数据,在正常状态下,集群主节点将挂载存储进行数据读写,而当集群发生故障时,Heartbeat 会首先通过一个仲裁设备将主节点挂载的存储设备释放,然后在备用节点上挂载存储,接着启动服务,通过这种方式实现数据的共享和同步。这种数据共享方式实现简单,但是成本较高,并且存在脑裂的可能,需要根据实际应用环境来选择。这种方案可以实现 99.990%的 SLA。
13.1.4 Heartbeat/DRBD 高可用解决方案
这种高可用解决方案也是借助第三方软硬件实现的,在处理 failover 的方式上依旧采用 Heartbeat,不同的是,在数据共享方面,采用了基于块级别的数据同步软件 DRBD 来实现。
DRBD(Distributed Replicated Block Device)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。和 SAN 网络不同,它并不共享存储,而是通过服务器之间的网络复制数据。这种方案实现起来稍微复杂,同时也存在脑裂的问题,可以实现 99.900%的 SLA。
13.1.5 MySQL Cluster 高可用解决方案
MySQL Cluster 由一组服务节点构成,每个服务节点上均运行着多种进程,包括 MySQL 服务器、NDB Cluster 的数据节点、管理服务器,以及(可能)专门的数据访问程序。此解决方案是 MySQL 官方主推的技术方案,功能强大,但是由于实现较为繁琐,配置麻烦,企业实际应用并不多。MySQL Cluster 的标准版和电信版可以达到 99.999%的 SLA。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论