Я пишу лямбда-функцию AWS, чтобы сделать последний снимок нашей производственной базы данных и восстановить его как новую базу данных. Это нормально работало в качестве экземпляра RDS, но недавно мы переключили нашу основную БД на Aurora, и это кластер, а не экземпляр.
Я заглянул в API и смог изменить старую логику. Я поменял слово instance
для cluster
по большей части, и казалось, что он работает, он создал новый кластер и т.д. Новый кластер, однако, показывает 0 экземпляров, тогда как БД, из которой он произошел, показывает 1. Я думаю, что это мешает мне удаленно подключиться к нему, как я могу исходный кластер БД.
Я все еще не уверен, что такое кластер, но нужно ли мне запускать экземпляр отдельно, чтобы включить удаленное соединение?
Вот часть скрипта Python, кстати -
def byTimestamp(snap):
if 'SnapshotCreateTime' in snap:
return datetime.datetime.isoformat(snap['SnapshotCreateTime'])
else:
return datetime.datetime.isoformat(datetime.datetime.now())
def restore_db():
client = boto3.client('rds', region_name=region)
source_snaps = client.describe_db_cluster_snapshots(DBClusterIdentifier = 'main-production')['DBClusterSnapshots']
source_snap = sorted(source_snaps, key=byTimestamp, reverse=True)[0]['DBClusterSnapshotIdentifier']
response = client.restore_db_cluster_from_snapshot(
DBClusterIdentifier='main-development',
SnapshotIdentifier=source_snap,
Port=port,
Engine='aurora-postgresql')
Да, вам нужно запустить экземпляр в кластере.
Кластер Aurora имеет том хранения Aurora с вашими данными и 0 или более экземпляров, которые могут получить к нему доступ. Вы не можете получить доступ к данным кластера, если у вас нет хотя бы одного экземпляра в кластере.
Причина такой абстракции заключается в том, что в отличие от обычного сервера базы данных, где данные находятся «на сервере» и где у вас есть главный сервер, а иногда и одна или несколько реплик, каждая с копией данных, мастер Aurora и реплики запись и чтение из одного и того же хранилища, и любая реплика может стать главной в случае сбоя мастера.
Консоль скрывает от вас кое-что из этого, если вы подготовите оттуда Аврору.