如何实现MySQL的高可用

什么是高可用

高可用就是指服务随时可用。通常以百分比表示,这本身也是一种暗示:高可用性不是绝对的,只有相对更高的可用性。100%的可用性是不可能达到的。可用性的“9”规则是表示可用性目标最普遍的方法。你可能也知道,“5个9”表示99.999%的正常可用时间。换句话说,每年只允许5分钟的宕机时间

服务不可用的原因有哪些

MySQL服务不可用的情形可以分为性能问题、服务器问题。性能问题主要可能是执行了糟糕的SQL、使用了糟糕的schema和索引设计。服务器问题主要可能是磁盘空间耗尽、服务器bug、错误的行为或者主从延时。

因为糟糕的SQL或索引设计会导致MySQL执行效率降低,从而影响MySQL的服务能力
由于误操作执行了DROP TABLE导致数据丢失
备库与主库出现了较大的延时,对读取备库数据的业务产生影响

如何实现高可用

描述系统的可用性有两个指标,分别是平均失效时间(MTBF)和平均恢复时间(MTTR)
平均失效时间(Mean Time Between Failures,MTBF)是一个衡量系统或组件在运行期间平均能够无故障运行多久的指标。

平均修复时间(Mean Time To Repair,MTTR)是一个衡量在系统或设备出现故障后,平均需要多长时间才能完成修复并恢复其正常运行状态的时间指标。

提升平均失效时间(MTBF)

在日常开发和维护中,要按照一定规范执行,可以避免大多数宕机的风险。
避免服务器问题

  • 升级前仔细检查系统
  • 确认基本的服务器配置是正确的
  • 避免使用复杂的特性,例如复制过滤和触发器,除非确实需要
  • 监控重要的组件和功能,特别是像磁盘空间和RAID卷状态这样的关键项目,但也要避免误报,只有当确实发生问题时才发送告警
  • 定期检查复制完整性
  • 归档并清理不需要的数据
  • 遵从最小权限原则
    避免性能问题
  • 定期进行查询语句审查
  • 使用好的命名和组织约定来避免产生混乱,例如服务器是用于开发还是用于生产环境。

降低平均修复时间(MTTR)

服务不可能100%可用,所以当服务不可用时能尽快恢复可用是很有必要的。

避免单点失效

为服务添加冗余节点,当服务失效时及时切换到冗余节点保障服务正常运行。
MySQL提供的复制功能可以很好的解决这个问题。一主多备的结构虽然可以提高数据的安全性和服务的可用性,但是并没有为系统性能带来提升。MySQL cluster解决了一主多备带来的问题。集群中的每个节点都是主-主结构的复制,都有读写能力,即为服务提供了冗余能力,也可以提高服务的并发性能。

故障转移和故障恢复

冗余是很好的技术,但实际上只有在遇到故障需要恢复时才会用到。在故障转移的过程中,高可用性是建立在冗余的基础上。当有一个组件失效,但存在冗余时,可以停止使用发生故障的组件,而使用冗余备件。冗余和故障转移结合可以帮助更快地恢复。

提升备库或切换角色

提升一台备库为主库,或者在一个主—主复制结构中调换主动和被动角色

中间件解决方案

可以使用代理、端口转发、网络地址转换(NAT)或者硬件负载均衡来实现故障转移和故障恢复。

在应用中处理故障转移

有时候让应用来处理故障转移会更简单或者更加灵活。例如,如果应用遇到一个错误,这个错误外部观察者正常情况下是无法察觉的,例如关于数据库损坏的错误日志信息,那么应用可以自己来处理故障转移过程。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值