当前位置: 首页 > 科技观察

MySQL高可用架构选择,简洁明了都是重点

时间:2023-03-16 01:50:05 科技观察

MySQL发展至今,在高可用上不断推进,从最初的异步复制、半同步复制、组复制到当前的InnoDBCluster和InnoDB副本集。本文将讲解各种高可用架构和适用场景。1、高可用架构MySQLReplication经典的主从复制需要多步手动配置。比如用户管理、备份恢复、配置复制……MySQL只提供核心功能,整体架构需要用户自己决定(大部分情况下需要定制)。在这种情况下,组织或公司需要使用不同的技术组件,技术专家或DBA需要投入大量的工作和时间进行自动化。MySQLInnoDBCluster2016年,MySQL推出了MySQLInnoDBCluster。InnoDBCluster主要包括MySQLGroupReplication(组成员变更管理、网络分区控制、集群范围一致性...)、MySQLShell(强大的接口、自动集成所有组件)、MySQLRouter(应用透明路由、负载均衡、自动化applicationfailover...)和MySQLClone(自动部署成员,完全集成到InnoDBCluster中)。MySQLInnoDBReplicaSet2020年,MySQL推出了MySQLInnoDBReplicaSet。该功能在经典的主从复制的基础上,全面集成了MySQLShell和MySQLRouter。2.InnoDBCluster和InnoDBReplicaSet以上简单介绍了MySQL高可用的前世今生的解决方案。下面将详细介绍InnoDBCluster和InnoDBReplicaSet。MySQLInnoDBCluster是MySQL的一个集成产品解决方案,具有高可用性和可扩展性,其组件包括MySQLServer、MySQLShell、MySQLRouter和MySQLGroupReplication。它的目标是提供一个集成的MySQL产品,所有组件统一开发,所有组件集成,并进行全栈测试。此外,易用性也是该产品的一大特色,使用统一的客户端MySQLShell进行集群的统一编排和管理。MySQLGroupReplicationMySQLGroupReplication是一个分布式高可用MySQL数据库,具有容错、自动故障转移、多节点更新、自动成员管理、冲突检测/解决和数据丢失预防。是复制数据库状态机理论的实现,可以保证整体的写入顺序,保证一致性。Cluster-wideeventualconsistency,8.0.14以后如果使用MySQL,可以实现session和global的读写强一致性。MySQL5.7将此功能作为GA发布,支持所有MySQL平台,包括Linux、Windows、Solaris、macOS、FreeBSD等。MySQLGroupReplication可用于以下场景:一致性:零数据丢失(RPO=0)○当主成员失效,数据不会丢失。○防止网络分区,大多数在线原则防止网络分区。高可用性:自动故障转移○自动选举主要成员○自动控制网络分区读取扩展:○按需添加/删除节点○使用过程控制来处理延迟○可配置的一致性级别?最终一致性?完全一致性主要主要环境:○写入同时对多个成员?组内顺序写入(XCOM、PAXOS理论的实现)?保证一致性○写入性能好程序与后端MySQL数据库之间提供透明路由连接。透明客户端连接路由○负责平衡○应用程序连接故障转移○简单配置无缝设计提供简单的HA客户端路由○路由作为应用程序堆栈的一部分集成InnoDBCluster和InnoDBReplicaSet主节点2个TCP端口与非主节点MySQL通信Shell提供了一个数据库管理界面,可以执行所有与MySQL相关的任务。支持多种语言:JavaScript、Python、SQLScriptable支持文档存储和关系模型开放完整的开发和管理API经典的MySQL协议和X协议MySQLShell简单易用,通过它可以快速搭建InnoDBCluster。创建集群配置实例添加实例启动MySQLRouter查看集群状态MySQLInnoDBReplicaSet完全集成MySQLRouter简单易用的MySQLShell配置、添加、删除成员自动部署成员(Clone)主从复制架构○手动切换和故障转移○异步读扩展○简单的主从架构○无硬件网络要求?提供主节点的可用性InnoDBReplicaSet可以通过克隆自动部署新成员,使用MySQLShell自动配置用户和复制,手动配置,添加和删除applications使用的服务器,MySQLRouter或者其他proxy,可以集成MySQLRouter的负载均衡能力。这样就避免了以往需要配置主从复制的繁琐步骤。过去,需要使用额外的监控工具来检查每台服务器上的拓扑状态。用户对所有组件的所有配置负责,每一项设置都相当于定制。使用InnoDBReplicaSet,可以通过MySQLShellstatus()查看拓扑状态,Shell会根据最佳实践配置服务器、路由和复制,防止出错。InnoDBReplicaSet是一个标准的解决方案,由MySQL团队支持和保证。该方案的优点是简单易用,初学者也能很快掌握。3.如何选择高可用架构最后,说明如何选择不同的高可用架构。首先,必须明确业务的需求。高可用性越高,成本越高。目标可以从以下几个方面来明确:RecoveryTimeObjective(RTO)服务从故障中恢复需要多长时间?RecoveryPointObjective(RPO)服务在故障期间允许丢失的数据故障类型○高可用性:单台服务器故障、网络分区○灾难恢复:整体地理/网络故障○人为错误:操作错误、故意损坏程度○0○秒○分钟○小时○...不同业务需求对应的架构单区域RTO=小时RPO=一台MySQL服务器○备份○同步日志单区域RTO=小时RPO=一台MySQL服务器不到1秒○频繁备份○连续单区域拉取二进制日志RTO=几分钟RPO=小于1秒MySQLInnoDBReplicaSet单区域RTO=几秒RPO=0MySQLInnoDBCluster多区域故障RTO=几分钟RPO=几秒MySQLInnoDBCluster○使用异步复制Multi-region区域故障RTO=几个点RPO=0MySQLInnoDBCluster跨区域部署○两个region的一致性级别设置为AFTER,或者三个regions,每个region有1-2个成员。○写入的吞吐量受到影响,写入事务需要保证事务同步。以上就是关于MySQL高可用架构的内容。用户可以根据不同的需求选择适合自己的架构。