使用适用于 InfluxDB 的 Amazon Timestream 的多可用区只读副本集群 - Amazon Timestream
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

有关与适用于 LiveAnalytics 的 Amazon Timestream 类似的功能,可以考虑使用适用于 InfluxDB 的 Amazon Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间,以实现实时分析。点击此处了解更多信息。

使用适用于 InfluxDB 的 Amazon Timestream 的多可用区只读副本集群

只读副本集群部署是适用于 InfluxDB 的 Amazon Timestream 的一种异步部署模式,允许您配置连接到主数据库实例的只读副本。只读副本集群包含一个写入器数据库实例和一个读取器数据库实例,位于同一 Amazon Web Services 区域 的不同可用区。与多可用区数据库实例部署相比,只读副本集群可提供高可用性以及增加读取工作负载容量。

只读副本集群的实例类可用性

只读副本集群部署支持与常规适用于 InfluxDB 的 Timestream 实例相同的实例类型。

实例类 vCPU 内存(GiB) 存储类型 网络带宽(Gbps)
db.influx.medium 1 8 已包含 Influx IOPS 10
db.influx.large 2 16 已包含 Influx IOPS 10
db.influx.xlarge 4 32 已包含 Influx IOPS 10
db.influx.2xlarge 8 64 已包含 Influx IOPS 10
db.influx.4xlarge 16 128 已包含 Influx IOPS 10
db.influx.8xlarge 32 256 已包含 Influx IOPS 12
db.influx.12xlarge 48 384 已包含 Influx IOPS 20
db.influx.16xlarge 64 512 已包含 Influx IOPS 25
db.influx.24xlarge 96 768 已包含 Influx IOPS 40

只读副本集群架构

借助只读副本集群,适用于 InfluxDB 的 Amazon Timestream 会使用 InfluxData 的许可只读副本附加组件,自动将写入器数据库实例的所有写入复制到所有读取器数据库实例。此复制为异步复制,所有写入操作在写入节点提交后立即得到确认。写入操作无需获得所有读取器节点的确认即可视为成功写入。写入器数据库实例提交数据后,几乎可以立即将数据复制到只读副本实例。如果写入器出现无法恢复的故障,则任何还未复制到至少一个读取器的数据都将丢失。

只读副本实例是写入器数据库实例的只读副本。您可以将从应用程序发出的部分或全部查询路由到只读副本,以减轻写入器数据库实例上的负载。通过这种方法,可以实现弹性横向扩展并超越单个数据库实例的容量限制,以处理读取密集型数据库工作负载。

下图显示主数据库实例正在复制到不同可用区中的只读副本。客户端拥有对主数据库实例的读/写访问权限以及对副本的只读访问权限。

可用区 A 中的主数据库实例以异步方式复制到可用区 C 中的只读副本实例。

只读副本集群的参数组

在只读副本集群中,数据库集群参数组充当引擎配置值的容器,这些值可应用于只读副本集群中的每个数据库实例。默认数据库参数组基于数据库引擎和数据库引擎版本进行设置。数据库参数组中的设置用于集群中的所有数据库实例。

使用多可用区数据库只读副本的 CreateDbClusterUpdateDbCluster 传递特定数据库参数组时,请确保将 storage-wal-max-write-delay 持续时间设置为至少 1 小时。如果未指定数据库参数组,storage-wal-max-write-delay 默认为 1 小时。

只读副本集群中的副本滞后

尽管适用于 InfluxDB 的 Timestream 只读副本集群允许高写入性能,但基于引擎的异步复制的性质仍可能导致副本滞后。这种滞后可能导致失效转移时出现潜在数据丢失,因此必须进行监控。

您可以通过在 Amazon Web Services 管理控制台 导航窗格中选择所有指标,以跟踪 CloudWatch 中的副本滞后。选择 Timestream/InfluxDB,然后选择 By DbCluster。选择 DbClusterName,然后选择 DbReaderInstanceName。在此处,除所有适用于 InfluxDB 的 Timestream 实例跟踪的常用指标集(见下文列表)外,您还将看到以毫秒为单位的 ReplicaLag。

  • CPUUtilization

  • MemoryUtilization

  • DiskUtilization

  • ReplicaLag(仅适用于副本实例模式的数据库实例)

副本滞后的常见原因

一般来说,写入工作负载和读取工作负载过高时,导致读取器数据库实例无法有效应用事务时,就会出现副本滞后。各种工作负载都可能会产生临时或持续副本滞后。以下是一些常见示例:

  • 写入器数据库实例的高写入并发或大量批处理更新,导致读取器数据库实例上的应用过程落后。

  • 在一个或多个读取器数据库实例上使用资源的繁重的读取工作负载。运行速度慢或查询数量多都可能会影响应用进程,继而导致副本滞后。

  • 由于数据库必须保留提交顺序,因此修改大量数据或 DDL 语句的事务有时会暂时加剧副本滞后问题。

有关演示副本滞后超过设置时间量时如何创建 CloudWatch 告警的教程,请参阅 教程:为适用于 InfluxDB 的 Amazon Timestream 的多可用区集群副本滞后创建 Amazon CloudWatch 警报

缓解副本滞后问题

对于适用于 InfluxDB 的 Timestream 只读副本集群,可通过减少写入器数据库实例的负载以缓解副本滞后问题。

可用性与持久性

只读副本集群可配置为:在写入器故障时自动切换至其中一个读取器实例以优先保障写入可用性,或避免切换以最大限度减少提示数据丢失。提示数据是指尚未复制到至少一个读取器节点的数据复制间隙(请参阅 只读副本集群中的副本滞后)。只读副本集群的默认和推荐行为是在写入器发生故障时自动进行故障转移。然而,如果对于您的使用案例,提示数据丢失比写入可用性更为重要,则可通过更新集群覆盖默认值。

只读副本集群确保集群的所有数据库实例分布在至少两个可用区中,从而在可用区发生故障时提升写入可用性并增强数据持久性。