我每天都会创建一个新的 RDS 表,有时当天会达到约 10 GB。我的目标是更有效地将该表转储到 S3。
我目前的方法是:
从表中选择*;
将这些行转储到 CSV
将该 CSV 上传到 S3
删除 CSV 文件
有没有办法可以将 RDS 表直接转储到 S3,而不是在本地生成 CSV,然后将其转储到 S3?
查看亚马逊的数据库迁移服务。
我发现在控制台中创建将 RDS 转储到 S3 的任务相当简单,本指南应该适用于您,即使它讨论了 Aurora: https://aws.amazon.com/blogs/database/replicate-data-from-amazon-aurora-to-amazon-s3-with-aws-database-migration-service/
我有一个计划定期运行的 lambda,它启动 DMS 任务来转储数据库的一些表。
lambda 的代码(或者只是一个手动工作)非常简单(Python 3.6):
import boto3
import os
DMS_TASK_ARN = os.environ.get("DMS_TASK_ARN")
MAX_RETRY = int(os.environ.get("MAX_RETRY", 600))
WAIT_TIME = int(os.environ.get("WAIT_TIME", 10))
dms = boto3.client('dms')
def lambda_handler(event, context):
# Start the replication task
print(f"Starting replication task {DMS_TASK_ARN}")
dms.start_replication_task(
ReplicationTaskArn=DMS_TASK_ARN,
StartReplicationTaskType='reload-target'
)
对于 SQL Server,您可以使用 RDS SQL Server 版本附带的存储过程。