文章插图
图5:MGR高可用方案
3. HA的选主规则
HA需要一套复杂的选主规则 , 用以适配我们复杂的部署环境 , 选主规则如下:
- 排除在bad slaves里的slave
- 选择所有latest slaves优先级最高的candidate master
- 如果从库没有设置优先级 , 选出所有非bad slaves的slave
- 根据切换策略 , 依次选择同DC->同region->跨region的slave 。
- 对满足条件的从库 , 排除从库所在机器Master个数和Slave个数太多的salve , 在剩下的slave中选择机器剩余磁盘空间最大的slave 。
4. 补全diff binlog
在Master切换过程中 , 会存在3种类型的diff binlog:
- 从库io thread接收到的relay log不完整 , 不是一个完整的事务或完整的binlog event 。
- lastest slave与其他slave存在的diff relay log 。
- 如果dead master机器还能访问, 则还包括dead master未发送的diff binlog 。
文章插图
图6:数据恢复步骤
如果是使用gtid复制 , 需要生成3种diff binlog文件 , 然后顺序Apply diff binlog文件 , 恢复从库 。非gtid复制 , 先change master到lastest slave , 先让slave从lastest slave恢复数据 , 然后再apply dead master未发送的diff binlog 文件 , 完成binlog补齐 。
5. 数据一致性的重要性
如果采用半同步复制 , 且主库宕机瞬间没有发生网络超时 , 则HA能保证切换以后数据的一致性 。但如果主库宕机瞬间 , 网络存在超时会导致半同步复制退化为异步复制 , 此时发生切换就可能丢失数据 。这种情况需要业务端具备补偿机制 , 对数据进行补齐 。但如果是MGR , 不会存在数据丢失的问题 。
结束语
我们结合爱奇艺多种内部监控系统、资产管理系统、CMDB、链路追踪以及混沌工程平台开发一个面向业务的应用运维平台 , 提供一站式服务拨测、巡检、资源使用分析、调用链路追踪以及故障演练等功能 。通过混沌工程平台提供的故障注入能力 , 对S级业务的数据库进行攻防演练 。经过不断的迭代优化 , 数据库的攻防演练会成为常态 , 通过不断的演练提升应用的可用性和安全性 , 真正做到有备无患 。
技术原创及架构实践文章 , 欢迎通过公众号菜单「联系我们」进行投稿 。
高可用架构
改变互联网的构建方式
【爱奇艺MySQL高可用方案概述】
推荐阅读
- MySQL技术数据库基础操作命令大全,建议收藏
- 霍山黄芽的加工工艺,霍山黄芽品赏先容
- MySql数据库的下载及安装
- 径山茶形态及制作工艺,径山茶功效及作用介绍
- 金属茶具的发展历史,锡茶具从古人工艺及历史文化发展
- 内网穿透外网访问内网 MySQL 等数据库教程
- 删库一定要跑路吗?手把手教你MySQL数据恢复
- 韩国的饮食茶,韩国茶人讨教武夷茶艺
- 烘青绿茶如何泡,烘青绿茶制作工艺先容
- 文艺简约的昵称有哪些?