Timescale Cloud:性能、规模、企业级

自托管产品

MST

TimescaleDB 托管服务 (MST) 是托管在 Azure 和 GCP 上的 TimescaleDB。MST 是与 Aiven 合作提供的服务。

Timescale Cloud 还是 MST?

Timescale Cloud 是一个高性能的、以开发者为中心的云服务,提供增强了我们极速向量搜索的 PostgreSQL 服务。您可以将 Timescale Cloud 安全地与您的 AWS、GCS 或 Azure 基础设施集成。创建 Timescale Cloud 服务并免费试用。

如果您需要在 GCP 或 Azure 上运行 TimescaleDB,那么您来对地方了 — 请继续阅读。

您的 TimescaleDB 托管服务账户包含三个主要组成部分:项目、服务和数据库。

当您注册 TimescaleDB 托管服务,系统会自动为您创建一个空项目。项目是最高的组织级别,它们包含您的所有服务和数据库。您可以使用项目来组织服务组。每个项目还可以有自己的账单设置。

要创建新项目:在 MST 控制台,点击 Projects > Create project

MST projects

每个项目包含一个或多个服务。您可以在每个项目下拥有多个服务,每个服务对应一个云服务提供商层级。您可以从项目内的 `Services` 选项卡访问所有服务。

MST services list

有关启动和运行您的第一个服务的更多信息,请参阅TimescaleDB 托管服务安装部分

重要提示

当您创建并命名了一个新的 TimescaleDB 托管服务后,您无法对其进行重命名。如果您需要以不同的名称运行您的服务,您需要创建一个新服务并手动迁移数据。有关数据迁移的更多信息,请参阅迁移您的数据

有关 TimescaleDB 托管服务账单的信息,请参阅账单部分

每个服务可以包含一个或多个数据库。要查看现有数据库或创建新数据库,请在服务列表中选择一个服务,点击 Databases,然后点击 Create database

MST databases list

TimescaleDB 托管服务通过与 Aiven 的合作提供。这为您提供了 99.99% 可用性的服务承诺。有关更多信息,请参阅Aiven 服务等级协议策略

创建新服务时,您需要选择一个配置方案。该方案决定了服务运行的虚拟机 (VM) 数量、高可用性配置、CPU 核心数量以及内存和存储卷的大小。

方案包括

  • 基础方案 (Basic Plans):包括 2 天的备份,并在实例发生故障时自动备份和恢复。
  • 开发方案 (Dev Plans):包括 1 天的备份,并在实例发生故障时自动备份和恢复。
  • 专业方案 (Pro Plans):包括 3 天的备份,并在实例发生故障时自动故障转移到热备用节点。

基础方案和开发方案由单个虚拟机 (VM) 节点提供服务。这意味着如果节点发生故障,服务将不可用,直到构建新的 VM。如果在故障发生前没有备份最新的数据更改,这可能导致数据丢失。有时,服务恢复正常运行也可能需要很长时间,因为需要创建新的 VM 并从备份中恢复才能恢复服务。恢复时间取决于需要恢复的数据量。

专业方案对故障的弹性更强。单个节点故障不会导致数据丢失,并且可能的停机时间最短。如果正在运行的 TimescaleDB 主节点发生故障,一个最新的副本节点会自动提升为新的主节点。这意味着在应用程序重新连接到数据库并访问新主节点时,只会发生短暂的中断。

您可以在服务运行期间升级您的方案。服务会在后台重新配置以在更大的 VM 上运行,当重新配置完成后,DNS 名称将指向新的主机。这可能在 DNS 更改传播期间导致服务短暂中断。

在每个配置方案选项中,有几种可用的方案类型

  • IO-Optimized(I/O 优化型)和 Compute-Optimized(计算优化型) 这些配置针对输入/输出 (I/O) 性能进行了优化,使用 SSD 存储介质。
  • Storage-Optimized(存储优化型):这些配置通常具有更大的总体存储容量,使用 HDD 存储介质。
  • Dev-Only(仅用于开发):这些配置通常占用资源较少,成本较低,专为开发和测试场景设计。
MST selecting a service configuration plan

大多数轻微故障都会自动处理,无需对您的服务部署进行任何更改。这包括服务进程崩溃或暂时失去网络访问等故障。当崩溃的进程自动重启或网络访问恢复时,服务会自动恢复正常运行。

然而,更严重的故障模式,例如完全丢失单个节点,需要更彻底的恢复措施。整个节点或虚拟机丢失可能例如由于硬件故障或严重的软件故障而发生。

故障节点由 MST 监控基础设施自动检测。节点要么开始报告其自身的自诊断功能报告问题,要么节点完全停止通信。当发生这种情况时,监控基础设施会自动安排创建新的替换节点。

注意

在数据库故障转移的情况下,您的服务的服务 URL 保持不变。只有 IP 地址会更改以指向新的主节点。

TimescaleDB 托管服务的可用性功能因服务方案而异

  • 基础方案和开发方案:这些是单节点方案。基础方案包括两天备份历史,开发方案包括一天备份历史。
  • 专业方案:这些是双节点方案,包含一个主节点和一个备用节点以实现更高可用性,并提供三天备份历史。

在基础方案和开发方案中,如果服务中的唯一节点丢失,它会立即启动自动创建新替换节点的过程。新节点启动,从最新可用备份恢复其状态,并恢复服务。由于只有一个节点提供服务,因此在恢复操作期间服务不可用。此外,自最新预写日志 (WAL) 文件备份以来所做的任何写入都将丢失。通常,此时间窗口限制为五分钟或一个 WAL 文件。

在专业方案中,如果 PostgreSQL 备用节点发生故障,主节点会正常运行并向客户端应用程序提供正常的服务水平。当新的替换备用节点准备就绪并与主节点同步后,它会实时复制主节点,并恢复正常操作。

如果 PostgreSQL 主节点发生故障,MST 监控基础设施和备用节点的组合信息将用于做出故障转移决策。在节点上,开源监控守护程序 PGLookout 结合 MST 系统基础设施的信息报告故障转移。如果主节点完全宕机,备用节点会将自身提升为新的主节点并立即开始服务客户端。系统会自动安排一个新的替换节点,并使其成为新的备用节点。

如果主节点和备用节点同时发生故障,系统会自动安排创建两个新节点,并分别成为新的主节点和备用节点。主节点会从最新可用备份中恢复自身,这意味着可能会涉及一定程度的数据丢失。例如,自最新预写日志 (WAL) 文件备份以来所做的任何写入都可能丢失。

替换故障节点所需的时间主要取决于云区域和需要恢复的数据量。然而,对于采用双节点专业方案的服务,即使在重建另一个节点期间,存活的节点也会继续为客户端提供服务。此过程完全自动化,无需手动干预。

对于备份和恢复,TimescaleDB 托管服务使用 MST 维护的开源备份守护程序 PGHoard。它将预写日志 (WAL) 文件实时复制到对象存储中,并采用压缩和加密格式。

TimescaleDB 托管服务限制了每个服务的最大连接数。允许的最大连接数取决于您的服务方案。要查看您的服务的当前连接限制,请导航到服务 Overview 选项卡并找到 Connection Limit 部分。

如果您有大量客户端或客户端线程连接到您的数据库,请使用连接池来限制连接数。有关连接池的更多信息,请参阅连接池部分

注意

如果您的数据库连接数过多,您的服务可能会运行缓慢,并可能耗尽内存。请务必随时注意您的数据库有多少个开放连接。

您可以通过启用服务终止保护来保护您的服务免遭意外终止。启用终止保护后,您无法通过 Web 控制台、REST API 或命令行客户端关闭服务。要关闭受保护的服务,您需要先关闭终止保护。终止保护不会中断服务迁移或升级。

要启用服务终止保护,请导航到服务 Overview 选项卡。找到 Termination protection 部分,并切换以启用保护。

重要提示

如果您用完免费注册信用额度,并且未输入有效的信用卡进行支付,即使您已启用终止保护,您的服务仍将被关闭。

TimescaleDB 托管服务使用 TCP 连接的默认保活设置。默认设置是

  • tcp_keepalives_idle: 7200
  • tcp_keepalive_count: 9
  • tcp_keepalives_interval: 75

如果您有长时间空闲的数据库连接会话,您可能需要调整这些设置以确保您的 TCP 连接保持稳定。如果您遇到 TCP 连接中断,当您重新连接时,请确保您的客户端正确解析 DNS 地址,因为底层地址在自动故障转移期间会发生变化。

有关调整保活设置的更多信息,请参阅PostgreSQL 文档

TimescaleDB 托管服务不会取消数据库查询。如果您创建了一个耗时很长或已挂起的查询,它可能会锁定您服务上的资源,并阻止执行数据库管理任务。

您可以通过导航到服务 Current Queries 选项卡来查看是否有任何长时间运行的查询。您也可以从此选项卡取消长时间运行的查询。

或者,您可以使用连接客户端通过此命令查看正在运行的查询

SELECT * FROM pg_stat_activity
WHERE state <> 'idle';

使用此命令取消长时间运行的查询,其中包含您要取消的查询的 PID

SELECT pg_terminate_backend(<PID>);

如果您想自动取消运行时间超过指定时长的任何查询,您可以使用此命令

SET statement_timeout = <milliseconds>

关键词

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