将 Timestream 数据导出到 Amazon S3 - Amazon Timestream
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Timestream 数据导出到 Amazon S3

无论迁移的目标服务是什么,我们都建议您遵循以下最佳实践,将 LiveAnalytics 数据的 Timestream 导出到 Amazon S3,创建一个耐用的中间存储层,作为后续数据库特定摄取的基础。

为了可靠地将 LiveAnalytics 表的 Timestream 数据导出到 Amazon S3,我们建议使用 Timestream LiveAnalytics 导出工具,该工具使用 Timestream UNLOAD 功能,专为大规模数据导出而设计。

LiveAnalytics 导出工具的时间流

基于时间的分块策略

在迁移大量时间序列数据时,基于时间的分块处理至关重要。此方法将导出过程分解为可管理的单元,这些单元可独立处理并在失败时重试,从而显著降低迁移风险。该方法创建检查点以便更轻松地跟踪进度,并增加中断后恢复的功能。对于持续进行数据摄取的组织而言,这使得新数据能够按独立时间段进行导出,从而实现持续运行与迁移操作之间的更佳协调。该工具使用基于日期的分块,借助 S3 存储桶前缀存储每一天的数据,以实现高效管理。此外,可根据小时、日、月或年进行分块。

监控迁移

该工具提供一种选项,用于在 DynamoDB 表中捕获迁移统计信息,跟踪使用的配置、导出的记录和其他数据点等指标,以验证迁移的完整性。我们建议在迁移和验证期间密切监控这些指标。您还可以在编排脚本中使用提供的日志记录功能,捕获执行时间戳、分块边界以及遇到的任何错误情况。如果您想集成下游系统以在发生故障时采取相应措施,该工具还会提供 SNS 通知。

建议和最佳实践

Timestream LiveAnalytics for export 工具为将数据导出到 S3 提供了灵活而强大的解决方案,可根据您的目标系统要求量身定制各种配置选项。如果您的目标是适用于 InfluxDB 的 Timestream,请使用未压缩的 Parquet 格式,以确保兼容数据摄取脚本。为实现最佳跟踪和监控效果,请启用 DynamoDB 日志记录功能,并配置 SNS 通知,以接收有关导出失败或完成的警报。

该工具利用 Timestream f LiveAnalytics or UNLOAD 功能,同时根据您指定的时间范围自动批量导出数据,从而克服其分区查询限制。可以按小时、日、月或年自定义数据分区,默认设置为日。每个分区必须保持在约 350GB 以下,以避免出现与内存相关的错误,例如查询计算超过可用内存上限。例如,如果年度数据超过 350GB,请考虑使用月度分区,甚至更精细的选项,例如每日或每小时分区。如果选择按小时计费后仍出现“查询计算超过可用内存上限”错误,则可以减少分区数量,确保导出成功完成。

该工具在导出范围方面具有灵活性,支持导出单个表、整个数据库或账户中的所有数据库。对于更多特殊需求,例如导出多个特定数据库,可围绕此自动化构建自定义封装程序。此外,您还可以通过启用倒序排列选项,选择优先导出最新数据。在失败后重新启动时,您可以继续使用相同的迁移标签,将所有文件保留在相同的 S3 前缀下,也可以省略该标签以使用新前缀创建文件。由于该工具会分批次导出数据,如果遇到导出失败的情况,我们建议从失败的批次开始重新处理,而非从最初的起始时间重新开始。如果未指定结束时间戳,该工具将自动采用当前时间戳(UTC),以确保导出结果与验证过程的一致性。

基本命令

例 :导出已启用 DynamoDB 日志记录的表
python3.9 unload.py \ --export-table \ --database Demo \ --table Demo \ --start-time '2020-03-26 17:24:38' \ --enable-dynamodb_logger true
例 :导出整个数据库
python3.9 unload.py \ --export-database \ --database Demo \ --start-time '2020-03-26 17:24:38'
例 :导出所有数据库
python3.9 unload.py \ --export-all_databases \ --start-time '2020-03-26 17:24:38'
例 :提供更多选项的高级导出
python unload.py \ --export-table \ --database MyDB \ --table MyTable \ --start-time '2024-05-14 00:00:00' \ --end-time '2025-05-14 00:00:00' \ --partition month \ --export-format PARQUET \ --compression GZIP \ --region us-east-1 \ --s3-uri s3://my-bucket \ --enable-dynamodb_logger \ --sns-topic_arn arn:aws:sns:region:account-id:topic-name

有关更多信息,请参阅卸载脚本的自述文件