对于对停机时间容忍度非常低的 Timescale Cloud 服务,Timescale Cloud 提供高可用性 (HA) 副本。HA 副本显著降低了因系统故障导致的停机和数据丢失风险,并使服务能够在例行维护期间避免停机。
本页介绍如何为您的 Timescale Cloud 服务选择最佳的高可用性选项。
HA 副本是数据库的精确、最新副本,托管在与主节点相同的区域内的多个 AWS 可用区 (AZ) 中。如果原始主数据节点不可用,它们会自动接管操作。主节点将其预写日志 (WAL) 流式传输到副本,以最大限度地减少故障转移期间的数据丢失机会。
HA 副本可以是同步和异步的。
- 同步:主节点在副本确认之前的写入已完成之后提交其下一次写入。主节点和副本之间没有延迟。它们始终处于相同的状态。如果您需要最高级别的数据完整性,则这是首选。但是,这会影响主节点的摄取时间。
- 异步:主节点在没有确认之前的写入完成的情况下提交其下一次写入。与主节点相比,异步 HA 副本通常在时间和数据上都存在延迟。如果您需要最短的主节点摄取时间,则这是首选。

HA 副本具有单独的唯一地址,您可以使用这些地址并行于主数据节点处理只读请求。当您的主数据节点发生故障时,Timescale Cloud 会在 30 秒内自动故障转移到 HA 副本。在故障转移期间,只读地址不可用,同时 Timescale Cloud 会自动创建一个新的 HA 副本。创建此副本的时间取决于多种因素,包括数据的大小。
将 Timescale Cloud 服务升级到新的主要或次要版本等操作可能需要重启服务。重启在维护窗口期间运行。为了避免任何停机,每个数据节点会依次更新。也就是说,在主数据节点更新时,副本会被提升为主节点。在主节点更新并在线后,对 HA 副本执行相同的维护。
为了确保所有 Timescale Cloud 服务在最常见的故障场景和维护期间具有最短的停机时间和数据丢失,默认情况下为所有服务启用快速恢复。
以下 HA 配置在 Timescale Cloud 中可用
非生产环境:无副本,最适合开发人员环境。
高可用性:单个异步副本,位于与主节点不同的 AWS 可用区中。以经济高效的方式提供高可用性。最适合生产应用。
最高可用性:两个副本,位于与主节点不同的 AWS 可用区中。可用的复制模式有
- 高性能 - 两个异步副本。通过两个 AZ 和查询 HA 系统的能力提供最高级别的可用性。最适合绝对关键的应用。
- 高数据完整性 - 一个同步副本和一个异步副本。同步副本始终与主节点相同。最适合可以容忍数据零丢失的应用。
下表总结了这些 HA 配置之间的差异
高可用性 (1 个异步) | 高性能 (2 个异步) | 高数据完整性 (1 个同步 + 1 个异步) | |
---|---|---|---|
写入流程 | 主节点将其 WAL 流式传输到异步副本,该副本可能比主节点略有延迟,提供 99.9% 的正常运行时间 SLA。 | 主节点将其写入流式传输到两个异步副本,提供 99.9+% 的正常运行时间 SLA。 | 主节点将其写入流式传输到同步和异步副本。异步副本永远不会领先于同步副本。 |
额外的读取副本 | 推荐。从 HA 副本读取可能会导致可用性和延迟问题。 | 不需要。即使其中一个 HA 副本宕机,您仍然可以从 HA 副本读取。仅当您的读取用例与写入用例显著不同时,才配置额外的读取副本。 | 强烈推荐。如果您在同步副本上运行繁重的查询,它可能会落后于主节点。具体来说,如果副本确认事务花费的时间太长,则下一个事务将被取消。 |
手动选择要从中读取的副本 | 不适用。 | 不可用。查询在所有可用的 HA 副本之间进行负载均衡。 | 不可用。查询在所有可用的 HA 副本之间进行负载均衡。 |
同步复制 | 此配置中仅支持异步副本。 | 此配置中仅支持异步副本。 | 支持。 |
故障转移流程 |
|
|
|
成本构成 | 主节点 + 异步 (2 倍) | 主节点 + 2 个异步 (3 倍) | 主节点 + 1 个异步 + 1 个同步 (3 倍) |
层级 | 性能版、规模版和企业版 | 规模版和企业版 | 规模版和企业版 |
高
和最高
HA 策略适用于规模版和企业版定价计划。
为 Timescale Cloud 服务启用 HA
- 在Timescale 控制台中,选择要为其启用复制的服务。
- 点击
操作
,然后选择高可用性
。 - 选择您的复制策略,然后点击
更改配置
。 - 在
更改高可用性配置
中,点击更改配置
。
要更改您的 HA 副本策略,请点击更改配置
,选择一个策略,然后点击更改配置
。要下载 HA 副本的连接信息,可以点击副本活动配置
旁边的链接,或者在本服务的概述
选项卡中查找信息。
要测试故障转移机制,您可以触发切换。切换是一种安全操作,它尝试故障转移,如果副本或主节点未处于安全切换状态,则会抛出错误。
以
tsdbadmin
或属于tsdbowner
组的另一个用户身份连接到您的主节点。注意
您也可以使用此过程连接到 HA 副本并检查其节点。
在
psql
提示符下,连接到postgres
数据库\c postgres您应该看到
postgres=>
提示符。检查您的节点当前是否处于恢复状态
select pg_is_in_recovery();检查哪个节点当前是您的主节点
select * from pg_stat_replication;注意
application_name
。这是您的服务 ID 后跟节点。重要的部分是-an-0
或-an-1
。计划切换
CALL tscloud.cluster_switchover();默认情况下,切换会在 30 秒内发生。您可以通过传递一个间隔来更改时间,如下所示
CALL tscloud.cluster_switchover('15 seconds'::INTERVAL);等待切换发生,然后检查哪个节点是您的主节点
SELECT * FROM pg_stat_replication;您应该看到一条通知,提示您的连接已重置,如下所示
FATAL: terminating connection due to administrator commandSSL connection has been closed unexpectedlyThe connection to the server was lost. Attempting reset: Succeeded.检查
application_name
。如果您的主节点之前是-an-1
,则现在应该是-an-0
。如果它是-an-0
,则现在应该是-an-1
。
关键词