这个博客提供了高可用性(HA)的指导方针在MySQL使用组复制架构和部署建议,基于我们的最佳实践。

每个架构和部署取决于客户需求和应用要求高可用性和使用的估计水平。例如,使用高读或写的应用程序,或者两者都是,需要99.999%的可用性。

在这里,我们给架构和部署建议和技术概述解决方案提供了一个高水平的高可用性和假定的使用读/写应用程序(每秒20 k或多个查询)。

布局

MySQL高可用性与组复制

组件

该体系结构是由两个主要的层:

  • 连接和分布层
  • RDBMS (关系数据库管理系统)层

连接层

连接层组成:

  • 应用程序代理重定向机制可以从一个虚拟IP管理keepalive像亚马逊这样的本地服务一个DNS解析服务路线53。它的功能是将流量重定向到积极代理节点。
  • 代理连接分布由两个或两个以上的节点。它的作用是将流量重定向到集群复制集团活跃节点。类似ProxySQL代理是一个7级代理,能够执行读/写分裂,这一层还负责重定向将主节点和读取写入副本,和HA防止单点故障

数据层

数据层是由:

  • 主节点服务写(或源)——这是会接受的节点和DDL修改写道。数据将被处理后酸范式(原子性、一致性、隔离、耐久性)和复制到所有其他节点。
  • 复制节点读请求服务的元素。一些副本节点可以选出主要的主节点故障。复制节点应该能够离开并加入健康的集群而不影响服务。
  • 复制机制跨节点分配的变化,这个解决方案是用组复制。组复制是紧耦合的解决方案这意味着数据库集群是基于一个数据集中的方法(单状态的数据,分布式提交)。在这种情况下,数据是一致的在时间节点和复制要求性能高的链接。鉴于此,不提倡地理分布和灾难恢复(DR)不是暗中支持的主组复制机制。

节点特征(CPU /内存/存储)不相关的主要解决方案设计。他们必须反映估计工作负载的解决方案必须覆盖,这是一个个案的识别。

什么是重要的是要记住,所有节点是集群的一部分必须具有相同的特点。如果他们不,集群将不平衡和服务将受到影响。

作为一个通用的迹象,我们建议使用解决方案和至少8芯生产时和16 gb的RAM。

高可用性

我们如何衡量可用性和在什么情况下,它成为“高”的可用性?

一般来说,测量的可用性是通过建立一个测量时间和除以时间是可用的。这个比例会很少是1,等于100%的可用性。在Pe雷竞技下载官网rcona我们不认为一个解决方案是高度可用如果不是至少99%或“两个9”可用。

可用性% 每年停机时间 每月停机时间 每周停机时间 每天停机时间
99%(“两个9”) 3.65天 7.31小时 1.68小时 14.40分钟
99.5%(“五两个9”) 1.83天 3.65小时 50.40分钟 7.20分钟
99.9%(“三个9”) 8.77小时 43.83分钟 10.08分钟 1.44分钟
99.95%(“三9 5”) 4.38小时 21.92分钟 5.04分钟 43.20秒
99.99%(“四9”) 52.60分钟 4.38分钟 1.01分钟 8.64秒
99.995% (“4 9 5”) 26.30分钟 2.19分钟 30.24秒 4.32秒
99.999%(“五个9”) 5.26分钟 26.30秒 6.05秒 864.00毫秒

高可用性是如何实现的呢?

有三个关键组件的高可用性:

  1. 基础设施这是物理或虚拟硬件,数据库系统依赖于运行。没有足够的基础设施(VM的、网络等)不能有高可用性。最简单的例子是:有没有办法使单个服务器高可用性。
  2. 拓扑管理——这是特别相关的软件管理数据库和管理能力在发生故障时保持一致。许多聚类或同步复制解决方案提供此功能的盒子。然而,对于异步复制,这是由额外的软件处理。
  3. 连接管理——这是特别相关的软件管理网络和连接方面的数据库。集群解决方案通常包连接管理器,但是在异步集群部署高可用性的连接管理器是强制性的。

这个解决方案提供了:

建议的解决方案,基于紧密耦合的数据库集群,提供了一个HA水平99.995%当加上组复制设置group_replication_consistency =后

组复制

故障

如果适当的计划和架构,数据库失败或配置更改,需要重新启动不影响数据库基础结构的稳定性。故障转移是稳定战略不可分割的一部分并调整业务需求与故障转移可用性和运行方法是实现这些目标的关键。下面是三个主要类型的故障转移可以发生在数据库环境。

  • 故障转移计划故障转移:故障转移的计划已经提前预定或发生在正则区间。可能有许多原因故障转移包括修补计划,大数据业务,现有基础设施退休,或简单地测试故障转移策略。
  • 计划外故障转移:计划外故障是发生在数据库意外无响应或经验的不稳定。这可能还包括紧急变化不属于计划的故障转移节奏或调度参数。计划外故障通常被认为是高风险业务由于高压力和高潜力数据损坏或数据碎片。
  • 地区或灾难恢复Failover:计划外故障仍然使用假设附加数据库基础设施是立即和处于可用状态。博士在一个地区或故障转移,我们会做出的假设有一个大型基础设施故障,要求企业将其业务从目前的可用性区域。
  • 这个解决方案涵盖了计划内和计划外故障转移。

维护窗口

主要和次要的维护:尽管它可能不明显,并不是所有的维护活动都是平等的,没有相同的依赖关系。最好单独维护要求停机维护或故障转移,可以做而不影响那些重要的稳定性指标。在定义这些维护依赖关系可以有改变在实际维修过程中,允许不同的节奏。

维修没有服务中断:滚动重启和使用适当的版本升级可以涵盖主要和次要的维修没有服务中断。

正常运行时间

当指数据库稳定,正常运行时间是可能的最大的稳定性和指标往往是一个不稳定的数据库环境的最明显的症状。正常运行时间由3个关键组件,与普遍的看法相反,是基于数据库软件时发生了什么可以将传入的请求而不是保持带请求错误的能力。

恢复时间目标(RTO):这可以归结为一个非常简单的问题”可以业务维持一个数据库停机多久?”。一旦业务与最小可行的目标恢复时间目标,更简单的计划和投资所需的基础设施来满足这一需求。是很重要的承认,而每个人的欲望100%正常运行时间,需要切合实际的期望,结合业务需求,而不是一个技术的欲望。

恢复点目标(RPO):恢复点之间有很大的区别和数据库基础设施的恢复时间。数据库可用,但不是精确的状态,这是当它变得不可用。这就是恢复点。这里我们问的问题是“多少数据可以在一个数据库停机业务失去?”。所有的企业都有自己的需求,值得注意的是,它永远是我们的目标永远维持任何数据丢失。但这是陷害在最糟糕的情况下多少数据可能会丢失和业务继续保持能力。

灾难恢复:而RTO和RPO是伟大的计划外停机或小规模打嗝的基础设施,当我们谈论灾难恢复这是一个重大的大规模停电不是严格为数据库基础设施。如何重新启动操作的业务能力与假设所有资源可用性区域主要是完全不可用?这里的假设是没有可行的恢复时间点或符合业务需求。博士虽然每个场景是基于可用的基础设施、独特的备份策略,技术堆栈,都有一些共同点为任何场景。

这个解决方案有助于提高正常运行时间:

使用此解决方案将帮助您同时显著降低RPO, RTO。鉴于紧密耦合的集群解决方案方法,单个节点的故障不会导致服务中断。
增加节点的数量还将提高集群弹性的公式:
F = (N - 1) / 2

地点:

F -容许失败

N -集群中的节点数量

例子:

在一个5节点集群,F = (5 - 1) / 2 = 2。

集群可以支持2失败。

4个节点的集群,F = (4 - 1) / 2 = 1。

集群可以支持多达失败。

这个解决方案还允许一个更严格的备份策略,将一个节点的备份周期,这将有助于在保持RPO低。正如前面提到的,博士不是覆盖默认的解决方案将需要一个额外的复制设置和控制器。

测量和监控raybet雷竞技竞猜在线官网

确保按计划执行数据库基础结构或最好的,有必要衡量这些指标的具体指标和警报当一些的不符合预期。定期检查这些测量也鼓励促进稳定和理解潜在风险与数据库相关的基础设施。以下是数据库性能测量和监控的三个方面raybet雷竞技竞猜在线官网

测量:了解数据库基础设施执行需要测量多个方面的基础设施。与测量,重要的是要理解样本大小的影响,样品时间,样品类型。

指标:指标指的是数据库的实际部分基础设施被测量。当我们讨论指标,并不是像素越高越好,因为它可以引入无意噪音或允许故障诊断变得过于繁琐。

报警:当一个或多个度量数据库的基础设施不正常或可接受的范围内,应该生成一个警告,这样团队负责数据库的适当部分基础设施可以调查和补救措施

raybet雷竞技竞猜在线官网这个解决方案是由监控:

raybetapp官方下载 都有一个特定的仪表板监控组复制状态和集群状态作为一个整体raybet雷竞技竞猜在线官网。(<一个href="//m.doggingzone.com/doc/percona-monitoring-and-management/2.x/introduction.html">https://www.雷竞技下载官网percona.com/doc/praybet雷竞技竞猜在线官网ercona-monitoring-and-management/2.x/introduction.html)有一个特定的仪表板监控组复制状态,和集群状态作为一个整体。raybet雷竞技竞猜在线官网

如何实现基础设施

在本节中,我们提供一步一步的指示如何实现上面的解决方案。

的元素

以下将使用:

  • 1虚拟IP ProxySQL 192.168.4.194故障转移
  • 2 ProxySQL节点
    • Proxy1 192.168.4.191
    • Proxy2 192.168.4.192
  • 4 MySQL节点单主要模式
    • Gr1一起192.168.4.81——最初的主
    • Gr2 192.168.4.82 -副本/故障转移
    • Gr3 192.168.4.83 -副本/故障转移
    • Gr4“192.168.4.84 -副本/备份
  • 港口。所有的港口都必须打开防火墙是否到位AppArmor对或SELinux或任何其他限制。
    • Proxysql
      • 6033年
      • 6032年
      • 3306年
    • MySQL - GR
      • 3306年
      • 33060年
      • 33061年

软件安装

首先,你需要安装<一个href="//m.doggingzone.com/software/mysql-database">雷竞技下载官网MySQL Percona分布MySQL- - - - - -雷竞技下载官网based变体,Percona服务器,每个节点上。按照说明在https://www.雷竞技下载官网percona.com/doc/percona-distribution-mysql/8.0/installing.html安装MySQL v8.雷竞技下载官网0 Percona服务器。

配置节点

在什么之前,确保所有节点使用相同的时区和时间:

检查也ntpd服务出现和启用。确保每个节点解析的其他节点名称:

如果不能够解决,添加的条目设置文件。

一旦服务器实例启动并运行检查Percona MySQL版本在每个节点上:雷竞技下载官网

步骤1

创建一个适当的用户管理:

根用户退出客户端,登录用户的dba。

一定要有一个好的和独特SERVER_ID值:

现在是时候组复制设置添加到实例。

步骤2

停止所有正在运行的节点,然后添加在my . cnf中所做:

重启所有节点和连接。

步骤3

创建一个用户复制(在所有节点上):

链接的节点复制通道(在所有节点上):

检查当前状态:

在这个阶段,您应该能够开始第一个(主)集群节点。

只有在GR1一起:

然后检查它:

一旦主正在运行,连接在第二个节点GR2并开始复制:

检查它是否正确注册:

测试复制工作原理:

GR1一起

在GR2

开始组复制的其他两个节点GR3 GR4“:

代理设置

步骤1

在我们的解决方案,我们将使用两个ProxySQL节点:

  • Proxy1 192.168.4.191
  • Proxy2 192.168.4.192

首先,您需要安装ProxySQL节点选择,在我们的例子中两个以上。

按照说明安装软件<一个href="//m.doggingzone.com/blog/2020/04/08/how-to-install-proxysql-from-the-percona-repository/">如何安装ProxySQL Percona库雷竞技下载官网一旦你已经安装了软件,我们首先需要授权访问ProxySQL监控用户对我们Percona MySQL服务器节点。雷竞技下载官网raybet雷竞技竞猜在线官网

在MySQL创raybet雷竞技竞猜在线官网建监控用户组复制节点:

然后定义一些基本的变量:

用户名和密码需要反映你的标准。上面使用的只是一个例子。然后设置节点集群:

步骤2

定义用户(s)、服务器和查询规则执行读/写分裂。创建一个或多个有效的用户,例如,如果你有一个用户命名app_gr与密码测试中,访问你的集团集群复制:

定义服务器:

定义查询规则获得读写分离:

步骤3

一旦我们准备好所有的配置,我们需要有一个特殊的系统模式中的视图Percona服务器节点。雷竞技下载官网视图为服务器版本8以上工作可以在这里找到(https://github.com/雷竞技下载官网Percona-Lab/group_replication_tools/blob/master/GR_sys_view_forProxysql_v1.sql)

在主节点上运行sql的集群复制。

步骤4

现在我们已经准备好启动本机支持集团在ProxySQL复制。我们将使用以下组定义:

作家HG - > 400
读者HG - > 401
BackupWHG - > 402
离线HG - > 9401

一些评论在这里看到完整的参数(参考<一个href="https://proxysql.com/documentation/main-runtime">https://proxysql.com/documentation/main-runtime mysql_group_replication_hostgroups)。我们建议设置的作家总是数1,以及witer_is_also_reader比1获得最可靠的结果。

max_writers: 1
writer_is_also_reader: 1

max_transactions_behind是一个主观的参数,你应该计算的基础上您的需求。如果例如你不能有一个陈旧的阅读,这将是安全的将这个值设置为较低的数字(50)和设置在所有组复制节点:

如果相反,你没有问题或严格的要求对一些陈旧的阅读,你可以放松和忽视的参数group_replication_consistency设置。我们建议设置group_replication_consistency =后和max_transactions_behind: 100。

代理哈

最后一步是为ProxySQL层启用高可用性。在这种方法中,我们将使用众所周知的keepalive服务。首先,安装keepalive软件使用百胜apt-get在每个ProxySQL节点:

然后修改/etc/keepalived/keepalived。相应的配置文件设置。在我们的例子中:

  • Proxy1192.168.4.0/24 dev enp0s9原型内核链接src 192.168.4.191范围
  • Proxy2192.168.4.0/24 dev enp0s9原型内核链接src 192.168.4.192范围
  • VIP 192.168.4.194

我们想要主Proxy1 Proxy2和故障转移节点。考虑到配置的样子:

一旦完成,keepalive服务开始,从现在开始的贵宾将Proxy1除非服务。

系统日志:

实施灾难恢复

博士的实现(灾难恢复)网站将遵循相同的方向提供了主要的网站。只有一些通用的规则,应遵循:

  • DR站点应该位于不同的地理位置比主网站(几百公里/英里之外)。
  • 连接之间的联系的主要网站和DR站点只能使用异步复制(标准MySQL复制设置)。

raybet雷竞技竞猜在线官网监控

只有很少的方法用于监视一组集群复制。raybet雷竞技竞猜在线官网最简单的方法是<一个href="//m.doggingzone.com/software/database-tools/percona-monitoring-and-management">雷竞技下载官网Praybet雷竞技竞猜在线官网ercona监视和管理(版本2.10或更高版本)部署到为你做这些。Percona监视和管理的安装方便查看雷竞技下载官网raybet雷竞技竞猜在线官网快速入门

雷竞技下载官网Praybet雷竞技竞猜在线官网ercona监视和管理

唯一重要的是要记住,当注册Percona为MySQL节点或MySQL服务器节点,你应该指定雷竞技下载官网replication_set国旗。

然后您可以使用组复制仪表板和监控您的集群的细节。raybet雷竞技竞猜在线官网

的部分是:

  • 概述(3板)

MySQL组复制

  • 复制延迟细节(3板)

  • 事务(8板)

  • 冲突

从命令行

从命令行您需要手动查询中的表性能模式:

例如,滞后的交易数量的节点:

或者使用一个更综合查询:

这将提供每个灌肠器的信息:

正如您可以看到的,<一个href="//m.doggingzone.com/software/database-tools/percona-monitoring-and-management">雷竞技下载官网Praybet雷竞技竞猜在线官网ercona监视和管理会给你一个更好的看法的前提下细节。

结论

使用这些步骤和建议,您可以设置数据库基础设施拥有高可用性的基于组复制和使用Percona监视和管理监控基础设施的性能和健康。雷竞技下载官网raybet雷竞技竞猜在线官网

请记住,我们一直致力于使我们的建议更好。因此,这里说明主题的基础上更改和修订尤其是越来越多的采用组复制。这是因为越是GR使用边界情况或偏差识别。这是一个重要的帮助我们完善我们的最佳实践。

雷竞技下载官网MySQL Percona分布是最完整的,稳定的,可伸缩的,和安全,开源MySQL解决方案,提供企业级的数据库环境最关键业务应用程序…和它的免费使用!

raybetapp2下载