跳至內容

如何對 Aurora PostgreSQL 相容版資料庫叢集的快照還原問題進行疑難排解?

4 分的閱讀內容
0

我想對從 Amazon Aurora PostgreSQL 相容版資料庫叢集快照還原時,發生的快照還原錯誤進行疑難排解。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

在您疑難排解快照還原錯誤之前,請確認您的快照與目標組態相容,且您具備所需權限。

在還原前確認快照相容性

在您還原快照之前,請確認版本相容性以避免發生錯誤。

檢查快照狀態與引擎版本

在還原快照前,您可以使用主控台或 AWS CLI 確認版本相容性。

若要使用主控台,請完成以下步驟:

  1. 開啟 Amazon Relational Database Service (Amazon RDS) console (Amazon Relational Database Service (Amazon RDS) 主控台)。
  2. 選擇 Snapshots (快照)。
  3. 選取您的快照。
  4. 選擇 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 政策。請完成以下步驟:

  1. 開啟 IAM console (IAM 主控台)。

  2. 在導覽窗格中,選擇 Users (使用者) 或 Roles (角色)。

  3. 選取您的使用者或角色名稱。

  4. 選擇 Add permissions (新增權限)。

  5. 選擇 Create inline policy (建立內嵌政策) 或編輯已附加至 IAM 實體的政策。

  6. 選擇 JSON 索引標籤。

  7. 輸入包含還原快照所需權限的政策:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "rds:RestoreDBClusterFromSnapshot",
                    "rds:CreateDBInstance",
                    "rds:DescribeDBSnapshots",
                    "rds:DescribeDBClusterSnapshots",
                    "rds:DescribeDBClusters",
                    "rds:DescribeDBInstances"
                ],
                "Resource": "*"
            }
        ]
    }
  8. 選擇 Next (下一步)。

  9. 輸入政策名稱。例如,輸入 RDSSnapshotRestorePolicy

  10. 選擇 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 區域。

相關資訊

從資料庫叢集快照還原

共用資料庫叢集快照

加密 Amazon Aurora 資源

IAM JSON 政策元素: 動作

AWS 官方已更新 5 個月前