Amazon-Web-Services

AWS restore_db_cluster_from_snapshot 但沒有實例

  • May 12, 2021

我正在編寫一個 AWS lambda 函式來獲取我們生產數據庫的最新快照並將其還原為新數據庫。這作為 RDS 實例執行良好,但我們最近將主數據庫切換到 Aurora,它是一個集群而不是實例。

我查看了 API 並能夠重新利用舊邏輯。我大部分情況下都換掉了這個詞instancecluster它看起來可以工作,它創建了一個新集群等。然而,新集群顯示 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 個或多個實例。除非集群中至少有 1 個實例,否則您實際上無法訪問集群的數據。

這種抽象的原因是,與傳統數據庫伺服器不同,在傳統數據庫伺服器中,數據“在伺服器上”,您有一個主伺服器,有時還有一個或多個副本,每個副本都有數據副本,即 Aurora 主伺服器和副本寫入和讀取同一個儲存,如果 master 失敗,任何副本都可以提升為 master。

如果您從那裡配置 Aurora,控制台會向您隱藏其中的一些內容。

引用自:https://serverfault.com/questions/886217