如何對 Aurora PostgreSQL 相容版資料庫叢集的快照還原問題進行疑難排解?
我想對從 Amazon Aurora PostgreSQL 相容版資料庫叢集快照還原時,發生的快照還原錯誤進行疑難排解。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
在您疑難排解快照還原錯誤之前,請確認您的快照與目標組態相容,且您具備所需權限。
在還原前確認快照相容性
在您還原快照之前,請確認版本相容性以避免發生錯誤。
檢查快照狀態與引擎版本
在還原快照前,您可以使用主控台或 AWS CLI 確認版本相容性。
若要使用主控台,請完成以下步驟:
- 開啟 Amazon Relational Database Service (Amazon RDS) console (Amazon Relational Database Service (Amazon RDS) 主控台)。
- 選擇 Snapshots (快照)。
- 選取您的快照。
- 選擇 Details (詳細資訊) 索引標籤,然後確認以下組態:<br id=hardline_break/> 確認 Engine (引擎) 參數為 aurora-postgresql。<br id=hardline_break/> 確認 Engine version (引擎版本) 與您的目標版本相容。<br id=hardline_break/> 確認 Status (狀態) 設定為可用。
若要使用 AWS CLI 列出所有可用的 Aurora PostgreSQL 相容版本,請執行以下 describe-db-engine-versions 命令:
aws rds describe-db-engine-versions \ --engine aurora-postgresql \ --query "DBEngineVersions[?EngineVersion=='your-snapshot-version'].ValidUpgradeTarget[*].EngineVersion" \ --region your-region
**注意:**將 your-snapshot-version 替換為您快照中的引擎版本,並將 your-region 替換為您的 AWS 區域。
確認 IAM 權限
請確認您的 AWS Identity and Access Management (IAM) 使用者或角色具備還原快照所需的權限。
若要檢查您目前的權限,請執行以下 get-user AWS CLI 命令:
aws iam get-user --region your-region
**注意:**將 your-region 替換為您的 AWS 區域。
IAM 政策範例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds:RestoreDBClusterFromSnapshot", "rds:CreateDBInstance", "rds:DescribeDBSnapshots", "rds:DescribeDBClusters", "rds:DescribeDBInstances" ], "Resource": "*" } ] }
解決 IAM 權限錯誤
如果您缺少所需的 Amazon RDS 權限,那麼您會收到以下錯誤訊息:
「User is not authorized to perform: rds:RestoreDBClusterFromSnapshot」
若要解決此錯誤,請將所需的 Amazon RDS 權限新增至您的 IAM 政策。請完成以下步驟:
-
開啟 IAM console (IAM 主控台)。
-
在導覽窗格中,選擇 Users (使用者) 或 Roles (角色)。
-
選取您的使用者或角色名稱。
-
選擇 Add permissions (新增權限)。
-
選擇 Create inline policy (建立內嵌政策) 或編輯已附加至 IAM 實體的政策。
-
選擇 JSON 索引標籤。
-
輸入包含還原快照所需權限的政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds:RestoreDBClusterFromSnapshot", "rds:CreateDBInstance", "rds:DescribeDBSnapshots", "rds:DescribeDBClusterSnapshots", "rds:DescribeDBClusters", "rds:DescribeDBInstances" ], "Resource": "*" } ] } -
選擇 Next (下一步)。
-
輸入政策名稱。例如,輸入 RDSSnapshotRestorePolicy。
-
選擇 Create policy (建立政策)。
解決 AWS KMS 加密權限錯誤
如果您在沒有適當 AWS Key Management Service (KMS) 權限的情況下嘗試還原已加密的快照,那麼您會收到以下其中一個錯誤訊息:
「Unable to restore from encrypted snapshot」
「KMS key access denied」
若要解決此錯誤,請檢查您的快照所使用的 AWS KMS key,然後將所需的 AWS KMS 權限新增至您的 IAM 政策。
若要檢查您的快照所使用的 AWS KMS key,請執行以下 describe-db-cluster-snapshots 命令:
aws rds describe-db-cluster-snapshots \ --db-cluster-snapshot-identifier your-snapshot-id \ --region your-region
**注意:**將 your-snapshot-id 替換為您的快照識別碼,並將 your-region 替換為您的 AWS 區域。
然後,將 AWS KMS 權限新增至您的 IAM 政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:CreateGrant", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" } ] }
**注意:**將 region 替換為您的 AWS 區域,將 account-id 替換為您的 AWS 帳戶 ID,並將 key-id 替換為您的 AWS KMS key ID。
解決找不到快照錯誤
如果您嘗試從不存在或您無法存取的快照還原,那麼您會收到以下錯誤訊息:
「DBClusterSnapshotNotFoundFault: DBClusterSnapshot snapshot-id not found」
若要解決此錯誤,請確認快照存在且您具備存取權限。
若要列出您帳戶中的可用快照,請執行以下 describe-db-cluster-snapshots 命令:
aws rds describe-db-cluster-snapshots \ --region your-region
**注意:**將 your-region 替換為您的 AWS 區域。
如果快照是從另一個 AWS 帳戶共用的,請確認該快照已與您的帳戶共用,且您已接受共用。
解決無效參數錯誤
如果您在還原期間指定了不相容的執行個體類別,那麼您會收到以下錯誤訊息:
「InvalidParameterValue: Invalid DB Instance class」
若要解決此錯誤,請選擇與 Aurora PostgreSQL 相容版本相容的執行個體類別。
若要列出目標引擎版本的有效執行個體類別,請執行以下 describe-orderable-db-instance-options 命令:
aws rds describe-orderable-db-instance-options \ --engine aurora-postgresql \ --engine-version your-version \ --region your-region
**注意:**將 your-version 替換為您的 PostgreSQL 版本,例如 15.4。將 your-region 替換為您的 AWS 區域。
檢閱輸出,然後選擇支援您目標引擎版本與所需功能的執行個體類別。
解決子網路群組錯誤
如果您在還原期間指定了無效的子網路,那麼您會收到以下錯誤訊息:
「InvalidSubnet: The requested subnet is not valid」
若要解決此錯誤,請確認您的資料庫子網路群組在多個可用區域中都包含子網路。
若要檢查您的子網路群組組態,請執行以下 describe-db-subnet-groups 命令:
aws rds describe-db-subnet-groups \ --db-subnet-group-name your-subnet-group \ --region your-region
**注意:**將 your-subnet-group 替換為您的資料庫子網路群組名稱,並將 your-region 替換為您的 AWS 區域。
確認子網路群組至少包含兩個可用區域中的子網路。如果子網路群組未在多個可用區域中包含子網路,則您可以修改子網路群組,以在其他可用區域新增子網路。
解決跨帳戶 AWS KMS key 存取錯誤
如果您在沒有適當 AWS KMS 權限的情況下,嘗試還原另一個 AWS 帳戶共用的已加密快照,那麼您會收到以下錯誤訊息:
「AccessDenied: Cross-account pass role is not allowed」
若要解決此錯誤,請確認 AWS KMS key 政策允許跨帳戶存取,且您的 IAM 角色具備必要權限。
若要檢查 AWS KMS key 政策,請執行以下 get-key-policy 命令:
aws kms get-key-policy \ --key-id your-key-id \ --policy-name default \ --region your-region
**注意:**將 your-key-id 替換為您的 AWS KMS key ID,並將 your-region 替換為您的 AWS 區域。
確認金鑰政策包含授予您 AWS 帳戶解密與建立授權的陳述式。如果您無法更新 AWS KMS key 政策,請聯絡快照擁有者以更新 AWS KMS key 政策。
對於跨帳戶的已加密快照,您無法直接從共用快照還原。請改為使用您自己的 AWS KMS key,將共用快照複製到您的帳戶,然後從該複本還原。如需更多資訊,請參閱共用已加密快照。
解決引擎版本相容性問題
如果您嘗試還原至不相容的引擎版本,那麼您可能在還原過程中收到錯誤。
若要解決此問題,請確認您的目標版本等於或高於快照的 PostgreSQL 版本。您無法還原至較低版本。
若要檢查可用的 Aurora PostgreSQL 相容版本,請執行以下 describe-db-engine-versions 命令:
aws rds describe-db-engine-versions \ --engine aurora-postgresql \ --region your-region
**注意:**將 your-region 替換為您的 AWS 區域。
檢閱輸出結果,確認與您的還原目標相容的引擎版本。
解決執行個體類別相容性問題
如果您選擇的執行個體類別不支援您的目標引擎版本或所需功能,則還原可能失敗。
若要解決此問題,請選擇符合您工作負載所需儲存容量與記憶體需求的執行個體類別。確認該執行個體類別支援您要還原的 Aurora PostgreSQL 相容版本,並支援任何特定功能,例如 Performance Insights。
若要確認執行個體類別相容性,請執行 describe-orderable-db-instance-options 命令:
aws rds describe-orderable-db-instance-options \ --engine aurora-postgresql \ --engine-version your-version \ --region your-region
**注意:**將 your-version 替換為您的 PostgreSQL 版本,例如 15.4。將 your-region 替換為您的 AWS 區域。
相關資訊
相關內容
- 已提問 3 年前
- 已提問 2 年前
