怎么注册网站账号,万网阿里云域名查询,wordpress做x站主题,wordpress视频大小文章中介绍了多种 MySQL 高可用技术#xff0c;并介绍了根据自身需求选择多通道主主复制技术的过程和注意事项。 作者#xff1a;徐良#xff0c;现任中国移动智慧家庭运营中心数据库高级经理#xff0c;多年数据库运维优化经验#xff0c;历任华为、一线互联网公司高级 D…文章中介绍了多种 MySQL 高可用技术并介绍了根据自身需求选择多通道主主复制技术的过程和注意事项。 作者徐良现任中国移动智慧家庭运营中心数据库高级经理多年数据库运维优化经验历任华为、一线互联网公司高级 DBA。目前主要负责中移智家基于规模的价值运营场景下数据库稳定性、容灾优化、异地多活等相关工作。 爱可生开源社区出品原创内容未经授权不得随意使用转载请联系小编并注明来源。 本文约 2800 字预计阅读需要 7 分钟。 背景介绍
在云网融合大数据时代数据已经成为重要的生产要素。特别是棱镜门、永恒之蓝、汶川大地震这类造成大规模数据丢失和泄漏的人为或自然灾害事件发生后中国相继出台了一系列的法律法规对各组织机构的数据安全保护条件进行限定如 2016 年颁布的《中华人民共和国网络安全法》、 2021 年全国人民代表大会通过的《数据安全法》等。
当发生灾难时容灾备份能够确保数据不丢失。要实现应用的容灾一个关键就是通过数据库的实时同步和复制在 A 地出现机房故障和问题的时候可以平滑快速的迁移到 B 地。虽然这种远程数据复制和同步存在一定的延迟但是基本可以满足业务连续性的需求。
容灾的基础概述
容灾的定义
容灾是指当数据中心发生各种未知灾难的时候确保数据不丢失或少丢失同时 IT 业务系统能够不间断运行或快速切换恢复。
灾难的衡量指标
评估一个灾备系统可靠性的两个重要指标是 RTO 与 RPO。
RTO (Recovery Time Objective) 恢复时间目标。RTO 是指灾难发生后从系统宕机导致业务停顿之刻开始到系统恢复至可以支持业务部门运作业务恢复运营之时此两点之间的时间。RTO 可简单地描述为企业能容忍的恢复时间。
RPO (Recovery Point Objective) 恢复点目标。RPO 是指灾难发生后容灾系统能把数据恢复到灾难发生前时间点的数据它是衡量企业在灾难发生后会丢失多少生产数据的指标。RPO可简单地描述为企业能容忍的最大数据丢失量。
RTO 针对的是服务时间的丢失RPO 针对的是数据的丢失两者是衡量容灾系统的两个主要指标但它们没有必然的关联性。
容灾的等级分类 2007 年 11 月 1 日开始正式实施的国家标准 (GB/T 20988-2007) 是我国灾难备份与恢复行业的第一个国家标准。
等级说明第 1 级基本级。备份介质场外存安全保障、 定期验证。第 2 级备份场地支持。网络和业务处理系统可在预定时间内调配到备份中心。第 3 级电子传输和部分设备支持。灾备中心配备部分业务处理和网络设备具备部分通讯链路。第 4 级电子传输和完整设备支持。数据定时批量传送网络/系统始终就绪。温备中心模式。第 5 级实时数据传输及完整设备支持。采用远程复制技术实现数据实时复制网络具备自动或集中切换能力业务处理系统就绪或运行中。第 6 级数据零丢失和远程集群支持。数据实时备份零丢失系统 /应用远程集群可自动切换用户同时接入主备中心。
灾难与 RTO、RPO 的关系
灾难恢复能力等级RTORPO12 天以上1 天至 7 天224 小时以后1 天至 7 天312 小时以上数小时至 1 小时4数小时至 2 天数小时至 1 小时5数分钟至 2 天0 至 30 分钟6数分钟0
两地三中心容灾
两地三中心能够组合本地高可用同城灾备中心异地灾备中心提高可用性提升业务连续性重点业务多采用“两地三中心”即生产数据中心、同城灾备中心、异地灾备中心建设方案。这种模式下多个数据中心是主备关系针对灾难的响应与切换周期根据异常情况灵活处理能够实现更优的 RTO 与 RPO 整体目标。 MySQL 常见的主从形式
MySQL 本身就自带有主从复制的功能解决了几个关键的问题数据一致性、检查点机制、可靠网络传输等可以帮助我们实现高可用切换和读写分离。
一主一从 一主一从能够提供备库主库故障后可以进行故障切换避免数据丢失。
一主多从 一主多从常见的主从架构使用起来简单有效不仅可以实现 HA而且还能读写分离进而提升集群的并发能力。
多主一从 多主一从可以将多个 MySQL 数据库备份到一台存储性能比较好的服务器上方便统一分析处理。
双主复制 双主复制也就是互做主从复制每个 master 既是 master又是另外一台服务器的 slave。这样任何一方所做的变更都会通过复制应用到另外一方的数据库中。同一时刻可以只有一个是主另外一个是备实例主动维护进行主从切换的时候无需进行特别的配置秒级切换方便日常升级维护。
级联复制 级联复制模式下部分 slave 的数据同步不连接主节点而是连接从节点。主节点有太多的从节点就会损耗一部分性能用于 replication 这个时候可以让 3~5 个从节点连接主节点其它从节点作为二级或者三级与从节点连接这样不仅可以缓解主节点的压力并且对数据一致性没有负面影响。
两地三中心 MySQL 主从复制
MySQL 常见高可用方案优劣
对比目前主流的数据库高可用方案都有各自的优势和劣势但在支持异地容灾方面都不够简单易用
高可用方案优势劣势主从 Keepalived部署简单没有主实例宕机后选主的问题。一主多从在切换之后其他从实例需要重新配置连接新主。MHA支持一主多从、主服务崩溃时不会导致数据不一致。SSH 存在安全隐患官方不在维护。组复制 MGR无延迟数据强一致性强依赖网络只能用在 GTID 模式下大事务和 DDL 操作有阻塞风险。MySQL InnoDB Cluster弥补组复制无法提供具有自动化故障转移功能的中间件。组件多成熟案例少。Orchestrator支持一主多从解决了管理节点的单点问题支持命令行和 Web 界面管理复制。功能复杂不方便集成进自有系统。
MySQL 主从初始化消息
通过抓取消息和分析代码发现 MySQL 从库和主库建立同步通道过程中分别进行网络连接建立、授权实例唯一性、时钟、字符集、binlog 配置校验等工作。其中实例唯一性校验过程从库会获取主库的 server id。 MySQL binlog 日志结构
MySQL 的主从复制是基于 binlog 文件而 binlog 文件是由多个 binlog event 构成binlog event 的整体结构由 headdatafooter 三部分组成。head 包含产生 event 的数据库实例 server id在主从复制作为区分 event 是否为自己实例生成的重要依据。 之前通过主从初始化消息能够获取主从管道对端主库的 server id此时和从库从管道内接受的 event 的 server id 进行对比能够识别该 event 是否是当前对端主库产生的。
两地三中心 MySQL 主从方案 1
两地三中心建设相对容易日常的演练和数据回流等配置比较繁琐容易出错。本方案通过机房内建立 MySQL 主主复制此时主从切换无需繁琐的命令只需要设置 read_only同城机房间也是建立主主复制方便容灾演练回切无需复杂的配置。同理与两地三中心 MySQL 也建立主主复制方便演练和回切。该方案使用原生的 MySQL 复制成熟度高未过多引入第三方组件具备规模化运维潜力。但原生的 MySQL 主从在多条链路存在主主复制时会出现复制回路问题导致数据冲突和不一致。 两地三中心 MySQL 主从方案 2
为解决复制回路问题在主机房边界节点实例上本方案使用上文中根据对端主库 server id 判断是否和 event 的 server id 相同对 IDC1 边界 MySQL 复制逻辑进行限制只同步管道内临近主产生的 binlog 日志级联主日志丢弃1 个同步管道只同步单台 master 日志解决回路问题。其他节点无需开启这个功能。 边界节点 MySQL 复制逻辑代码补丁 本补丁基于社区版 MySQL 5.7.40 升级修改 sys_vars.cc 文件增加 replicate_server_mode 配置项默认为 0兼容原有复制模式配置为 1 时主从同步仅同步管道内对端主产生的 binlog event。 修改 log_event.cc 文件的 Log_event::do_shall_skip 函数判断当前 event 的 server_id 和本通道对端主库 master 的 server_id 不相同时忽略仅同步对端主库产生的 event避免多通道主主时数据回路的问题。
总结
该 MySQL 数据同步方案优化了 MySQL 本身的日志同步机制引入多通道主主复制技术降低了机房容灾演练和回切时数据同步关系调整带的复杂性每个通道仅同步临近主库 binlog event解决了数据回路问题支撑重点业务两地三中心容灾无需引入第三方 HA同步等组件减少了相关软硬件和网络要求补丁代码量 100 行以内仅需对主机房边界节点升级风险可控。具备规模实例运维场景下成熟低成本简单可靠的特点能够和公司一键切换平台快速集成。未来也具备支撑三地五中心等更高等级容灾要求的能力。但该方案不支持多层级联复制同时也不支持列、记录级等更精细化灵活控制的能力。
更多技术文章请访问https://opensource.actionsky.com/
关于 SQLE
SQLE 是一款全方位的 SQL 质量管理平台覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库为开发和运维提供流程自动化能力提升上线效率提高数据质量。
SQLE 获取
类型地址版本库https://github.com/actiontech/sqle文档https://actiontech.github.io/sqle-docs/发布信息https://github.com/actiontech/sqle/releases数据审核插件开发文档https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse