

要获得与亚马逊 Timestream 类似的功能 LiveAnalytics，可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间，以实现实时分析。点击[此处](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)了解更多信息。

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

# 将 Timestream 数据导出到 Amazon S3
<a name="export-timestream-data"></a>

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

为了可靠地将 LiveAnalytics 表的 Timestream 数据导出到 Amazon S3，我们建议使用 [Timestream LiveAnalytics 导出工具，该工具](https://github.com/awslabs/amazon-timestream-tools/blob/mainline/tools/python/liveanalytics_migration_scripts/unload/README.md)使用 Timestream [UNLOAD](https://docs.aws.amazon.com//timestream/latest/developerguide/supported-sql-constructs.UNLOAD.html) 功能，专为大规模数据导出而设计。

** LiveAnalytics 导出工具的时间流**

*基于时间的分块策略*

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

*监控迁移*

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

## 建议和最佳实践
<a name="recommendations-best-practices"></a>

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

该工具利用 Timestream f LiveAnalytics [or UNLOAD](https://docs.aws.amazon.com//timestream/latest/developerguide/supported-sql-constructs.UNLOAD.html) 功能，同时根据您指定的时间范围自动批量导出数据，从而克服其[分区查询限制](https://docs.aws.amazon.com//timestream/latest/developerguide/export-unload-limits.html)。可以按小时、日、月或年自定义数据分区，默认设置为日。每个分区必须保持在约 350GB 以下，以避免出现与内存相关的错误，例如查询计算超过可用内存上限。例如，如果年度数据超过 350GB，请考虑使用月度分区，甚至更精细的选项，例如每日或每小时分区。如果选择按小时计费后仍出现“查询计算超过可用内存上限”错误，则可以减少[分区数量](https://github.com/awslabs/amazon-timestream-tools/blob/mainline/tools/python/liveanalytics_migration_scripts/unload/README.md#optional-parameters)，确保导出成功完成。

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

## 基本命令
<a name="basic-commands"></a>

**Example ：导出已启用 DynamoDB 日志记录的表**  

```
python3.9 unload.py \
    --export-table \
    --database Demo \
    --table Demo \
    --start-time '2020-03-26 17:24:38' \
    --enable-dynamodb_logger true
```

**Example ：导出整个数据库**  

```
python3.9 unload.py \
    --export-database \
    --database Demo \
    --start-time '2020-03-26 17:24:38'
```

**Example ：导出所有数据库**  

```
python3.9 unload.py \
    --export-all_databases \
    --start-time '2020-03-26 17:24:38'
```

**Example ：提供更多选项的高级导出**  

```
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
```

有关更多信息，请参阅卸载脚本的[自述文件](https://github.com/awslabs/amazon-timestream-tools/blob/mainline/tools/python/liveanalytics_migration_scripts/unload/README.md)。