一,什么是高可用
高可用性H.A. ( High Availability )指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。
而在实际生产中有好多原因都可能引起数据库系统的不可用。
如:
- 严重的主从延迟
- 主从复制中断
- 锁引起的大量阻塞
这些情况下虽然不至于完全不可用,但是已经不是高可用了,更不用说软硬件故障造成的服务器宕机等。
我们通常用正常可用的时间占用全年的百分比来表示可用程度。
比如5个9的可用性,允许5.256分钟不可用【( 365*24*60) * ( 1-0.99999 ) =5.256】
比如4个9的可用性,允许52.56分钟不可用【( 365*24*60) * ( 1-0.99999 ) =52.56】
比如3个9的可用性,允许525.6分钟不可用【( 365*24*60) * ( 1-0.99999 ) =525.6】
比如2个9的可用性,允许5256分钟不可用【( 365*24*60) * ( 1-0.99999 ) =5256】
比如1个9的可用性,允许52560分钟不可用【( 365*24*60) * ( 1-0.99999 ) =52560】
可用性级别根据实际业务进行选择。
二,如何实现高可用
1,避免导致系统不可用的因素,减少系统不可用的时间
- 服务器磁盘空间耗尽
- 性能糟糕的SQL
- 表结构和索引没有优化
- 主从数据不一致
- 人为的操作失误等等
实现思路
- 建立完善的监控及报警系统
- 对备份数据进行恢复测试
- 正确配置数据库环境
- 对不需要的数据进行归档和清理
2,增加系统冗余,保证发生系统不可用时可以尽快恢复
- 避免存在单点故障
- 主从切换及故障转移
实现思路
单点故障是指在一个系统中提供相同功能的组件只有一个如果这个组件失效了,就会影响整个系统功能的正常使用。组成应用系统的各个组件都有可能成为单点。
如何避免MySQL单点故障?
利用SUN共享存储或DRDB磁盘复制解决MySQL单点故障
SUN共享存储
由于其本身也是一个单点,所以说共享存储并不是-种好的解决单点故障的方式。
DRDB磁盘复制
由于故障转移的时候需要的时间比较长。磁盘本身损坏,准备都会损坏。
利用多写集群或NDB集群来解决MySQL单点故障
利用多写集群
性能取决于集群中最差的设备的性能,并且只支持innodb,且写性能较差。
NDB集群
每一个节点都是冗余存储,一个节点损坏也能恢复。
如果内存不足NDB集群的性能就会非常差。
利用MySQL主从复制来解决MySQL单点故障(最优解决方法)
如何解决主服务器的单点问题是关键问题
- 主服务器切换后如何通知应用新的主服务器的IP地址
- 如何检查MYSQL主服务器是否可用
- 如何处理从服务器和新主服务器之间的那种复制关系
下面看常用的MMM,MHA架构是怎么解决这个几个问题的。