Как вывести таблицу AWS RDS на S3 напрямую, а не локально - PullRequest
0 голосов
/ 10 мая 2019

Я создавал новую таблицу RDS каждый день, которая иногда достигает около 10 ГБ в этот день.Моя цель - сделать эту таблицу на S3 более эффективной.

Мой текущий способ сделать это:

  1. SELECT * FROM table;

  2. Дамп этих строк в CSV

  3. Загрузить этот CSV на S3

  4. Удалить файл CSV

Есть ли способ, которым ямогу вывести таблицу RDS в S3 напрямую, вместо того, чтобы генерировать этот CSV локально, а затем вывести его в S3?

1 Ответ

1 голос
/ 10 мая 2019

Ознакомьтесь со службой миграции баз данных Amazon.

https://aws.amazon.com/dms/

Я обнаружил, что создание задачи для сброса RDS в S3 довольно просто в консоли, и это руководство должно быть применимо к вам, даже если оно обсуждает Аврору: https://aws.amazon.com/blogs/database/replicate-data-from-amazon-aurora-to-amazon-s3-with-aws-database-migration-service/

У меня есть лямбда, которая запланирована на периодической основе, которая запускает задачу DMS для вывода нескольких таблиц базы данных.

Код для лямбды (или просто ручной работы) действительно прост (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'
    )
...