匯出快照 - Amazon MemoryDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

匯出快照

MemoryDB 支援將您的記憶體快照匯出至亞馬遜簡單儲存服務 (Amazon S3) 儲存貯體,讓您可以從外部 MemoryDB 存取快照。匯出的記憶體資料庫快照與開放原始碼 Redis OSS 完全相容,而且可以使用適當的 Redis OSS 版本或工具載入。您可以使用記憶體資料庫主控台、或 MemoryDB API 匯出快照集。 AWS CLI

如果您需要在其他 AWS 區域啟動叢集,匯出快照會很有幫助。您可以在一個 AWS 區域中匯出資料,將 .rdb 檔案複製到新的 AWS 區域,然後使用該 .rdb 檔案植入新叢集,而不必等待新叢集透過使用填入。如需植入新叢集的資訊,請參閱使用外部建立的快照植入新叢集。您也可能為了離線處理 .rdb 檔案,而想要匯出叢集資料。

重要
  • 您要將其複製到的目的地的 MemoryDB 快照和 Amazon S3 儲存貯體必須位於相同 AWS 區域。

    雖然複製到 Amazon S3 儲存貯體的快照已加密,但我們強烈建議您不要授與其他人存放快照之 Amazon S3 儲存貯體的存取權。

  • 使用資料分層的叢集不支援將快照匯出到 Amazon S3。如需詳細資訊,請參閱 資料分層

在將快照匯出到 Amazon S3 儲存貯體之前,您必須在與快照相同的 AWS 區域中擁有一個 Amazon S3 儲存貯體。授與存儲桶的內存數據庫訪問權限。前兩個步驟示範如何執行此操作。

警告

下列情況會以您不想要的方式公開資料:

  • 當其他人可以存取您將快照匯出到的 Amazon S3 儲存貯體時。

    若要控制對快照的存取,請僅允許存取您要存取資料的對象存取 Amazon S3 儲存貯體。如需管理 Amazon S3 儲存貯體存取權的詳細資訊,請參閱 Amazon S3 開發人員指南中的管理存取權

  • 當其他人有使用 CopySnapshot API 操作的權限時。

    具有使用 CopySnapshot API 操作許可的使用者或群組可以建立自己的 Amazon S3 儲存貯體並將快照複製到他們。若要控制快照的存取權限,請使用 AWS Identity and Access Management (IAM) 政策來控制誰有權使用 CopySnapshot API。如需有關使用 IAM 來控制使用 MemoryDB API 作業的詳細資訊,請參閱 MemoryDB 使用者指內存數據庫中的身份和訪問管理中的〈〉。

步驟 1:建立 Amazon S3 儲存貯體

下列程序使用 Amazon S3 主控台建立 Amazon S3 儲存貯體,您可以在其中匯出和存放記憶體資料庫快照。

建立 Amazon S3 儲存貯體
  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/

  2. 選擇 Create Bucket (建立儲存貯體)。

  3. Create a Bucket - Select a Bucket Name and Region (建立儲存貯體 - 選取儲存貯體名稱和區域) 中,執行下列動作:

    1. Bucket Name (儲存貯體名稱) 中,輸入 Amazon S3 儲存貯體的名稱。

    2. 區域清單中,為您的 Amazon S3 儲存貯體選擇一個 AWS 區域。此 AWS 區域必須與您要匯出的 MemoryDB 快照集所在的 AWS 區域相同。

    3. 選擇建立

如需有關建立 Amazon S3 儲存貯體的詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的建立儲存貯體

步驟 2:將記憶體資料庫存取權授予您的 Amazon S3 儲存貯體

AWS 2019 年 3 月 20 日之前引入的區域預設為啟用狀態。您可以立即開始在這些 AWS 區域中工作。2019 年 3 月 20 日之後引入的區域預設為停用狀態。您必須先啟用或選擇加入這些區域,才能使用這些區域,如管理 AWS 區域中所述。

授與某個區域中 S3 儲存貯體的記憶體資料庫存取權 AWS

若要在 AWS 區域中的 Amazon S3 儲存貯體上建立適當的許可,請執行下列步驟。

授與 S3 儲存貯體的記憶體資料庫存取權
  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/

  2. 選擇您要複製快照的目標 Amazon S3 儲存貯體的名稱。這應該是您在步驟 1:建立 Amazon S3 儲存貯體中建立的 S3 儲存貯體。

  3. 選擇 [權限] 索引標籤,然後在 [權限] 底下選擇 [值區

  4. 更新政策以授予 MemoryDB 執行操作所需的權限:

    • [ "Service" : "region-full-name.memorydb-snapshot.amazonaws.com" ] 新增至 Principal

    • 新增下列將快照匯出至 Amazon S3 儲存貯體所需的許可。

      • "s3:PutObject"

      • "s3:GetObject"

      • "s3:ListBucket"

      • "s3:GetBucketAcl"

      • "s3:ListMultipartUploadParts"

      • "s3:ListBucketMultipartUploads"

    以下是已更新政策可能有的外觀範例。

    { "Version": "2012-10-17", "Id": "Policy15397346", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "aws-region.memorydb-snapshot.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::example-bucket", "arn:aws:s3:::example-bucket/*" ] } ] }

步驟 3:匯出記憶體資料庫快照

現在,您已經建立了 S3 儲存貯體,並授與 MemoryDB 許可以存取它。將 S3 物件擁有權變更為已啟用 ACL-儲存貯體擁有者偏好。接下來,您可以使用 MemoryDB 主控台、 AWS CLI 或 MemoryDB API 將快照匯出至其中。以下假設您具備 S3 專屬的其他 IAM 許可。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListAllMyBuckets", "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::*" }] }

下列程序使用 MemoryDB 主控台將快照匯出到 Amazon S3 儲存貯體,以便您可以從 MemoryDB 外部存取快照。Amazon S3 儲存貯體必須與記憶體資料庫快照位於相同的 AWS 區域。

將記憶體資料庫快照匯出至 Amazon S3 儲存貯體
  1. 登入 AWS Management Console 並開啟記憶體資料庫主控台,網址為 https://console.aws.amazon.com/memorydb/。

  2. 若要查看快照清單,請從左側導覽窗格中選擇 [快照]。

  3. 從快照清單中,選擇要匯出之快照名稱左側的圓鈕。

  4. 請選擇 Copy (複製)。

  5. Create a Copy of the Backup? (是否建立備份複本?) 中,執行下列動作:

    1. 在 [新增快照名稱] 方塊中,輸入新快照的名稱。

      該名稱必須介於 1 到 1,000 個字元之間,而且能夠以 UTF-8 編碼。

      MemoryDB 會新增分片識別碼,.rdb以及您在此處輸入的值。例如,如果您輸入my-exported-snapshot,MemoryDB 會建立。my-exported-snapshot-0001.rdb

    2. 從「目標 S3 位置」清單中,選擇您要將快照複製到其中的 Amazon S3 儲存貯體的名稱 (您在其中建立的儲存貯體步驟 1:建立 Amazon S3 儲存貯體)。

      目標 S3 位置必須是快照 AWS 區域中具有以下許可的 Amazon S3 儲存貯體,匯出程序才能成功。

      • 物件存取權 - Read (讀取)Write (寫入)

      • 許可存取權 - Read (讀取)

      如需詳細資訊,請參閱 步驟 2:將記憶體資料庫存取權授予您的 Amazon S3 儲存貯體

    3. 請選擇 Copy (複製)。

注意

如果您的 S3 儲存貯體沒有 MemoryDB 將快照匯出到該儲存貯體所需的許可,您會收到下列其中一個錯誤訊息。返回步驟 2:將記憶體資料庫存取權授予您的 Amazon S3 儲存貯體以新增指定的權限,然後重試匯出快照。

  • 尚未在 S3 儲存貯體上被授與 %s 的讀取權限。

    解決方式:新增儲存貯體的 Read (讀取) 許可。

  • 尚未在 S3 儲存貯體上被授與寫入權限 %s。

    解決方式:新增儲存貯體的 Write (寫入) 許可。

  • 尚未被授與 S3 儲存貯體上的讀取 ACP 權限 %s。

    解決方式:新增儲存貯體的 Read (讀取) 許可存取。

如果要將快照複製到另一個 AWS 區域,請使用 Amazon S3 複製快照。如需詳細資訊,請參閱 Amazon 簡單儲存服務使用者指南中的複製物件

使用具有下列參數的 copy-snapshot CLI 作業將快照匯出到 Amazon S3 儲存貯體:

參數
  • --source-snapshot-name— 要複製的快照名稱。

  • --target-snapshot-name— 快照副本的名稱。

    該名稱必須介於 1 到 1,000 個字元之間,而且能夠以 UTF-8 編碼。

    MemoryDB 添加了一個分片標識符和.rdb您在這裡輸入的值。例如,如果您輸入my-exported-snapshot,MemoryDB 會建立。my-exported-snapshot-0001.rdb

  • --target-bucket— 您要匯出快照的 Amazon S3 儲存貯體的名稱。系統會在指定的值區中建立快照副本。

    --target-bucket必須是快照 AWS 區域中具有下列許可的 Amazon S3 儲存貯體,匯出程序才能成功。

    • 物件存取權 - Read (讀取)Write (寫入)

    • 許可存取權 - Read (讀取)

    如需詳細資訊,請參閱 步驟 2:將記憶體資料庫存取權授予您的 Amazon S3 儲存貯體

以下操作將快照複製到我的 S3 桶。

若為 Linux、macOS 或 Unix:

aws memorydb copy-snapshot \ --source-snapshot-name automatic.my-primary-2021-06-27-03-15 \ --target-snapshot-name my-exported-snapshot \ --target-bucket my-s3-bucket

針對 Windows:

aws memorydb copy-snapshot ^ --source-snapshot-name automatic.my-primary-2021-06-27-03-15 ^ --target-snapshot-name my-exported-snapshot ^ --target-bucket my-s3-bucket
注意

如果您的 S3 儲存貯體沒有 MemoryDB 將快照匯出到該儲存貯體所需的許可,您會收到下列其中一個錯誤訊息。返回步驟 2:將記憶體資料庫存取權授予您的 Amazon S3 儲存貯體以新增指定的權限,然後重試匯出快照。

  • 尚未在 S3 儲存貯體上被授與 %s 的讀取權限。

    解決方式:新增儲存貯體的 Read (讀取) 許可。

  • 尚未在 S3 儲存貯體上被授與寫入權限 %s。

    解決方式:新增儲存貯體的 Write (寫入) 許可。

  • 尚未被授與 S3 儲存貯體上的讀取 ACP 權限 %s。

    解決方式:新增儲存貯體的 Read (讀取) 許可存取。

如需詳細資訊,請參閱 AWS CLI 命令參考中的 copy-snapshot

如果要將快照複製到另一個 AWS 區域,請使用 Amazon S3 副本。如需詳細資訊,請參閱 Amazon 簡單儲存服務使用者指南中的複製物件

使用具有這些參數的 CopySnapshot API 操作,將快照匯出到 Amazon S3 儲存貯體。

參數
  • SourceSnapshotName— 要複製的快照名稱。

  • TargetSnapshotName— 快照副本的名稱。

    該名稱必須介於 1 到 1,000 個字元之間,而且能夠以 UTF-8 編碼。

    MemoryDB 會新增分片識別碼,.rdb以及您在此處輸入的值。例如,如果您輸入 my-exported-snapshot,則會得到 my-exported-snapshot-0001.rdb

  • TargetBucket— 您要匯出快照的 Amazon S3 儲存貯體的名稱。系統會在指定的值區中建立快照副本。

    TargetBucket必須是快照 AWS 區域中具有下列許可的 Amazon S3 儲存貯體,匯出程序才能成功。

    • 物件存取權 - Read (讀取)Write (寫入)

    • 許可存取權 - Read (讀取)

    如需詳細資訊,請參閱 步驟 2:將記憶體資料庫存取權授予您的 Amazon S3 儲存貯體

下列範例會將自動快照複製到 Amazon S3 儲存貯體my-s3-bucket

https://memory-db.us-east-1.amazonaws.com/ ?Action=CopySnapshot &SourceSnapshotName=automatic.my-primary-2021-06-27-03-15 &TargetBucket=my-s3-bucket &TargetSnapshotName=my-snapshot-copy &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20210801T220302Z &Version=2021-01-01 &X-Amz-Algorithm=Amazon4-HMAC-SHA256 &X-Amz-Date=20210801T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20210801T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>
注意

如果您的 S3 儲存貯體沒有 MemoryDB 將快照匯出到該儲存貯體所需的許可,您會收到下列其中一個錯誤訊息。返回步驟 2:將記憶體資料庫存取權授予您的 Amazon S3 儲存貯體以新增指定的權限,然後重試匯出快照。

  • 尚未在 S3 儲存貯體上被授與 %s 的讀取權限。

    解決方式:新增儲存貯體的 Read (讀取) 許可。

  • 尚未在 S3 儲存貯體上被授與寫入權限 %s。

    解決方式:新增儲存貯體的 Write (寫入) 許可。

  • 尚未被授與 S3 儲存貯體上的讀取 ACP 權限 %s。

    解決方式:新增儲存貯體的 Read (讀取) 許可存取。

如需詳細資訊,請參閱CopySnapshot

如果要將快照複製到另一個 AWS 區域,請使用 Amazon S3 副本將匯出的快照複製到另一個 AWS 區域的 Amazon S3 儲存貯體。如需詳細資訊,請參閱 Amazon 簡單儲存服務使用者指南中的複製物件