Назад | Перейти на главную страницу

AWS restore_db_cluster_from_snapshot пока нет экземпляров

Я пишу лямбда-функцию 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 и реплики запись и чтение из одного и того же хранилища, и любая реплика может стать главной в случае сбоя мастера.

Консоль скрывает от вас кое-что из этого, если вы подготовите оттуда Аврору.