Создать ежедневный временный клон кластера Аврора - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу создать временный клон моего кластера Aurora MySQL для ежедневного запуска ETL (чтобы убедиться, что он не влияет на другие службы), а затем завершить его после завершения ETL.

import boto3

client = boto3.client('rds')

old_cluster_identifier = 'test-etl'
new_cluster_identifier = 'test-etl-clone'

response = client.restore_db_cluster_to_point_in_time(
    DBClusterIdentifier=new_cluster_identifier,
    RestoreType='copy-on-write',
    SourceDBClusterIdentifier=old_cluster_identifier,
    UseLatestRestorableTime=True,
    Port=3306,
    DBSubnetGroupName='test-etl',
    VpcSecurityGroupIds=[
        'sg-xxxx',
    ],
    Tags=[],
    EnableIAMDatabaseAuthentication=False,
    BacktrackWindow=0,
    DeletionProtection=False,
    CopyTagsToSnapshot=False
)

reader_endpoint = response['DBCluster']['ReaderEndpoint']

response2 = client.create_db_instance(
    DBInstanceClass='db.t2.medium',
    Engine='aurora',
    DBClusterIdentifier=new_cluster_identifier,
    DBInstanceIdentifier=new_cluster_identifier + '-instance-1',
)

print(response2)

Этот код хорошо работает для меня, но затем, когда я хочу удалить кластер клонов из консоли, я просто нажимаю на имя экземпляра / Actions / Delete, и это одновременно удаляет и экземпляр, и кластер.

Я попытался найти эквивалент в AWS SDK, но если я запускаю функцию delete_db_instance (), он только удаляет экземпляр и сохраняет кластер со статусом «доступно», поэтому я должен сделать: - delete_db_instance (' test-etl-clone-instance-1 ') - подождать, пока он будет удален - delete_db_cluster (' test-etl-clone ')

Есть ли способ удалить оба одновременно одновременно?

Или я могу просто всегда иметь клонированный кластер без запущенного экземпляра и просто создавать / удалять новый экземпляр каждый день? Я не уверен, что будут дополнительные расходы, если у меня просто будет кластер без какого-либо экземпляра и будут ли данные актуальны или нет при создании нового экземпляра на следующий день.

Спасибо

1 Ответ

0 голосов
/ 22 апреля 2020

В итоге я обнаружил, что могу просто удалить и экземпляр, и кластер, не ожидая между ними:

import boto3

client = boto3.client('rds')

new_cluster_identifier = 'test-etl-clone'

client.delete_db_instance(
    DBInstanceIdentifier=new_cluster_identifier + '-instance-1',
    SkipFinalSnapshot=True,
    DeleteAutomatedBackups=True
)

client.delete_db_cluster(
    DBClusterIdentifier=new_cluster_identifier,
    SkipFinalSnapshot=True,
)

И я попытался повторно использовать существующий кластер, но он содержит только данные исходный кластер до момента его создания. Поэтому мне придется каждый день в конце создавать новый кластер + экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...