对于对停机时间容忍度非常低的 Timescale Cloud 服务,Timescale Cloud 提供高可用性 (HA) 副本。HA 副本显著降低了因系统故障导致的停机和数据丢失风险,并使服务能够在例行维护期间避免停机。

本页介绍如何为您的 Timescale Cloud 服务选择最佳的高可用性选项。

HA 副本是数据库的精确、最新副本,托管在与主节点相同的区域内的多个 AWS 可用区 (AZ) 中。如果原始主数据节点不可用,它们会自动接管操作。主节点将其预写日志 (WAL) 流式传输到副本,以最大限度地减少故障转移期间的数据丢失机会。

HA 副本可以是同步和异步的。

  • 同步:主节点在副本确认之前的写入已完成之后提交其下一次写入。主节点和副本之间没有延迟。它们始终处于相同的状态。如果您需要最高级别的数据完整性,则这是首选。但是,这会影响主节点的摄取时间。
  • 异步:主节点在没有确认之前的写入完成的情况下提交其下一次写入。与主节点相比,异步 HA 副本通常在时间和数据上都存在延迟。如果您需要最短的主节点摄取时间,则这是首选。

Sync and async replication

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 副本之间进行负载均衡。
同步复制此配置中仅支持异步副本。此配置中仅支持异步副本。支持。
故障转移流程
  • 如果主节点发生故障,副本将成为主节点,同时创建一个新节点,停机时间仅为几秒钟。
  • 如果副本发生故障,则会创建一个新的异步副本,而不会影响主节点。如果您从异步 HA 副本读取,则这些读取将失败,直到新的副本可用。
  • 如果主节点发生故障,其中一个副本将成为主节点,同时创建一个新节点,而另一个副本仍然可用于读取。
  • 如果副本发生故障,则会在另一个 AZ 中创建一个新的异步副本,而不会影响主节点。新创建的副本在追赶时落后于主节点和原始副本。
  • 如果主节点发生故障,同步副本将成为主节点,同时创建一个新节点,而异步副本仍然可用于读取。
  • 如果异步副本发生故障,则会创建一个新的异步副本。在创建新的异步副本时,同步副本上的繁重读取可能会延迟主节点的摄取时间。数据完整性仍然很高,但主节点的摄取性能可能会下降。
  • 如果同步副本发生故障,异步副本将成为同步副本,并创建一个新的异步副本。在此期间,主节点可能会遇到一些摄取性能下降。
成本构成主节点 + 异步 (2 倍)主节点 + 2 个异步 (3 倍)主节点 + 1 个异步 + 1 个同步 (3 倍)
层级性能版、规模版和企业版规模版和企业版规模版和企业版

最高 HA 策略适用于规模版和企业版定价计划。

为 Timescale Cloud 服务启用 HA

  1. Timescale 控制台中,选择要为其启用复制的服务。
  2. 点击操作,然后选择高可用性
  3. 选择您的复制策略,然后点击更改配置
    Creating a database replica in Timescale
  4. 更改高可用性配置中,点击更改配置

要更改您的 HA 副本策略,请点击更改配置,选择一个策略,然后点击更改配置。要下载 HA 副本的连接信息,可以点击副本活动配置旁边的链接,或者在本服务的概述选项卡中查找信息。

要测试故障转移机制,您可以触发切换。切换是一种安全操作,它尝试故障转移,如果副本或主节点未处于安全切换状态,则会抛出错误。

  1. tsdbadmin 或属于 tsdbowner 组的另一个用户身份连接到您的主节点。

    注意

    您也可以使用此过程连接到 HA 副本并检查其节点。

  2. psql 提示符下,连接到 postgres 数据库

    \c postgres

    您应该看到 postgres=> 提示符。

  3. 检查您的节点当前是否处于恢复状态

    select pg_is_in_recovery();
  4. 检查哪个节点当前是您的主节点

    select * from pg_stat_replication;

    注意 application_name。这是您的服务 ID 后跟节点。重要的部分是 -an-0-an-1

  5. 计划切换

    CALL tscloud.cluster_switchover();

    默认情况下,切换会在 30 秒内发生。您可以通过传递一个间隔来更改时间,如下所示

    CALL tscloud.cluster_switchover('15 seconds'::INTERVAL);
  6. 等待切换发生,然后检查哪个节点是您的主节点

    SELECT * FROM pg_stat_replication;

    您应该看到一条通知,提示您的连接已重置,如下所示

    FATAL: terminating connection due to administrator command
    SSL connection has been closed unexpectedly
    The connection to the server was lost. Attempting reset: Succeeded.
  7. 检查 application_name。如果您的主节点之前是 -an-1,则现在应该是 -an-0。如果它是 -an-0,则现在应该是 -an-1

关键词

在此页面上发现问题?报告问题 或在 GitHub 上编辑此页面