云原生数据库 TDSQL-C 高可用,一键实现多可用区部署

前言

随着云计算和大数据技术的飞速发展,云原生数据库逐渐成为企业 IT 架构的新趋势。腾讯云作为国内领先的云服务提供商,一直致力于云原生技术的研发和创新。今天,我们将为大家深度解析腾讯云原生数据库 TDSQL-C 的预置资源和 Serverless 两种实例形态,以及多可用区部署的特性,探讨多可用区部署背后的技术原理和应用场景。

云原生数据库 TDSQL-C(Cloud Native Database TDSQL-C)是腾讯云自主研发的一款云原生数据库产品,融合了传统数据库、云计算与新硬件技术的优势,可为用户提供具备高弹性、高性能、海量存储、安全可靠的数据库服务,100%兼容 MySQL 5.7、8.0,可实现超百万级 QPS 的高吞吐,提供最高 PB 级智能存储,保障数据安全可靠。TDSQL-C 分为两种实例形态,一种是预置资源(预先分配固定规格),另一种是 Serverless,我们将从下文来分别介绍。

预置资源形态解析

图1:实例形态为预置资源的集群架构图

实例形态为预置资源时,集群采用计算与存储分离的架构,通过将计算和存储资源进行解耦,实现了资源的按需分配和灵活调度。在预置资源实例的技术架构中,计算节点负责处理 SQL 请求和执行查询计划,而存储节点负责数据的持久化和副本管理。计算节点和存储节点之间通过高速网络进行通信,保证了数据的快速读写和一致性。

Serverless形态解析

图2:实例形态为 Serverless 的集群架构图

Serverless 是 TDSQL-C 的一种创新部署模式,将数据库的计算和存储资源进行分离,用户只需按实际使用量付费,无需关心数据库的硬件配置和容量规划。Serverless 集群可以根据业务负载自动扩缩容,实现资源的最大化利用和成本的最优化控制。

Serverless 集群具备以下特性:

1)资源扩缩范围(CCU)

CCU(TDSQL-C Compute Unit)为 Serverless 的计算单位,一个 CCU 近似等于1个 CPU 和 2GB 内存的计算资源,用户可以自定义设置集群的算力配置区间,最小算力0.25,最大算力64,较小的算力设置可以使集群在完全空闲时最大限度地进行缩减,避免产生额外的费用,较大的算力可以使集群负载过大时最大限度地进行扩展,稳定度过业务峰值,这种灵活的扩缩容机制使得 Serverless 集群可以更好地应对业务波动和峰值负载。

2)2)弹性策略

Serverless 集群的弹性策略是利用监控计算层实现的。通过监控业务负载情况,系统对计算资源进行自动扩缩容,并对该时刻所消耗的资源进行计费。当没有数据库请求时,监控服务会触发计算资源的回收,并通知接入层。当用户再次访问时,接入层则会唤醒集群,再次提供访问。

Serverless 集群的弹性策略一开始会根据用户购买时选择的容量范围,将 CPU、内存资源限制到最大规格,极大程度降低因 CPU 和内存扩容带来的时间影响和使用限制。当集群触发到自动弹性的负载阈值后,Buffer pool 会根据监控提前进行秒级调整。在这个方案下用户使用数据库可以无感知进行 CPU 扩容,并且不会因为连接突增导致实例 OOM。

3)自动启停

可以根据实际需要,开启或关闭自动暂停设置,开启时数据库在所设定时间内没有连接和 CPU 使用时,会自动暂停集群,暂停后计算不计费,存储仅按实际使用量计费;关闭时,数据库会保持持续运行,在没有连接和 CPU 使用时,按用户配置的最小 CCU 算力进行计费,适用于业务有心跳连接的应用场景。

云原生数据库高可用:

Region(区域)内的多可用区(Multi Availability Zone)高可用

回顾2021年3月,欧洲顶尖的云服务提供商 OVH 位于法国的一个数据中心遭遇火灾,导致设施完全被毁,造成约350万个网站被迫下线,一些客户的数据不幸永久丢失。OVH 的 CEO 在社交媒体上提醒客户采取他们的灾难恢复计划。这一事件说明,即便应用程序托管在云端,也无法完全排除所有故障风险,如断电断网,或者极端自然灾害所导致的故障,因此制定相应的灾难恢复计划至关重要。多可用区的部署能力,构成了增强容灾保障的首要因素。

云原生数据库 TDSQL-C 无论实例形态是预置资源还是 Serverless,都具备多可用区部署的功能,允许用户拥有一个储备的数据库实例。与单一可用区的部署策略相比,多可用区部署显著增强了系统的容灾能力,有效保障了数据库的安全,以防数据库实例出现故障或所在可用区发生服务中断,能够抵御包括机房整体故障在内的多种意外情况。

TDSQL-C 的多可用区部署功能显著提高了数据库实例的可用性和持久性,使其非常适合生产环境中的数据库工作负载。在您选择多可用区部署数据库实例时,TDSQL-C 将自动创建主数据库实例,并实时将数据复制到不同可用区的备用实例中。每个可用区都运行在独立且不同的基础设施上,确保了高度可靠的运行。一旦发生基础设施故障,TDSQL-C 能够自动执行到备用实例的故障转移,以便在故障转移完成后立即恢复数据库操作。由于数据库实例的终端节点在故障转移后保持不变,应用程序可以无需人工干预自动恢复数据库操作。此外,为了满足特定业务需求或进行容灾演练,TDSQL-C 也支持用户通过控制台手动执行主备切换操作。

多可用区部署工作原理

多可用区部署是将数据库的副本分布在不同的物理区域,以提高数据库的可用性和容错能力。在 TDSQL-C 集群中,用户可以选择备可用区部署数据库实例,当主可用区发生故障时,备可用区的副本可以立即接管业务,保证服务的持续可用。

TDSQL-C 的多可用区部署采用了数据强一致性的副本同步机制,保证了不同可用区之间的数据一致性。当主副本发生故障时,备副本可以立即切换为主副本,继续提供服务。这种故障自动转移的机制使得 TDSQL-C 可以在发生故障时快速恢复服务,提高了数据库的可用性和可靠性。

TDSQL-C 多可用区切换流程

图3:多可用区切换流程

云原生数据库 TDSQL-C 的后台系统可以感知可用区级别的故障,并自动进行切换,这个过程主要由管控系统和 HA 来实现。HA_SCHEDULER 会发现可用区故障并触发管控系统进行切换。这两个系统通过 ZK、内部监控平台和跨可用区 Ping 来感知可用区是否出现故障。一旦发现可用区级别的故障,系统会立即启动自动切换流程,拉起新的节点加入到路由信息表,并发起新的备份任务反向构建主从关系,完成新的主从同步配置,从而完成可用区级别的故障切换。

云原生数据库 TDSQL-C 将整个切换流程分为核心流程和非核心流程两个部分。核心流程会影响用户的当前使用,例如 VPC 网关切换失败会导致用户无法访问实例。因此,云原生数据库 TDSQL-C 对核心流程采用高度保障的方式,确保其完成度和完成时效。对于非核心流程,我们采用可降级模式(上图中虚线框部分表示可降级的流程)处理,保证核心流程的完成度和完成时效,避免因为非核心流程的任务失败导致跨可用区切换任务无法完成。如果降级的流程跳过执行,云原生数据库 TDSQL-C 会立即通过自动修复脚本或人为干预进行恢复,保证用户在完成切换后新建的节点不出现任务故障风险。

多可用区部署应用场景

1)高可用性应用

对于需要提供7*24不间断服务的业务,如在线电商平台、金融服务和社交媒体平台,多可用区部署可以确保在某个可用区发生故障时,其他可用区的实例能够立即接管服务,实现无缝切换。

2)灾难恢复

在发生自然灾害(如地震、洪水)或大规模网络故障时,多可用区部署可以保证数据的安全和业务的连续性。即使某个地区的所有数据中心都受到影响,其他地区的可用区仍然可以正常运行。

3)负载均衡

在高峰时段,如节假日促销或大型活动期间,多可用区部署可以帮助分散流量,避免单个可用区的过载,提高整体的系统性能。

4) 数据备份和同步

多可用区部署可以提供数据备份和同步服务,确保数据的一致性和可靠性。即使发生数据损坏或丢失,也可以从其他可用区的副本中快速恢复。

5) 多活架构

对于需要实现多活数据中心架构的企业,多可用区部署可以支持同时在不同地区进行读写操作,提高系统的整体吞吐量和可用性。

多可用区部署实践

了解了多可用区部署的原理和故障切换流程,下面我们来实际体验一下如何通过控制台为 TDSQL-C 集群进行多可用区部署,只需简单几步就可以完成设置。

步骤1

登录TDSQL-C 控制台,在左侧集群列表,找到需要进行多可用部署的目标集群,该集群此时为单可用区部署,记录其目前的部署方式。

部署方式:单可用区

主可用区:北京三区

步骤2

进入该集群的集群管理页,单击部署方式后的编辑小图标。

步骤3

在弹出的对话框,完成如下配置,单击确定。

参数

说明

多可用区部署

选择“是”,表示将集群从单可用区设置为多可用区。

备可用区

选择备库的可用区,具体地域支持选择的可用区以实际修改部署方式窗口为准。

binlog 复制方式

选择 binlog 复制的方式,默认为异步复制,支持异步复制、半同步复制、强同步复制三种模式。

步骤4

待集群的运行状态由“部署方式修改中”恢复成“运行中”时,检查此时该集群的部署方式。

部署方式:多可用区

主可用区:北京三区

备可用区:北京五区

至此,我们就完成了多可用区的设置,用户可以根据实际业务需求,选择多可用区部署的方式来增加数据库的容灾能力。

结语

云原生数据库 TDSQL-C 集群支持多可用区部署,是腾讯云在云原生数据库领域的一次重要更新。它不仅提高了数据库的可用性和可靠性,还降低了用户的运维成本和业务风险。未来,腾讯云将继续深耕云原生技术,为用户提供更加优质、高效的云服务。

如果您对 TDSQL-C 集群支持多可用区部署感兴趣,欢迎访问TDSQL-C官网文档了解更多信息。让我们一起探索云原生技术的无限可能!