匯出快照 - Amazon MemoryDB

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

匯出快照

MemoryDB 支援將 MemoryDB 快照匯出至 Amazon Simple Storage Service (Amazon S3) 儲存貯體,讓您從 MemoryDB 外部存取它。匯出的 MemoryDB 快照完全符合 Valkey 和開放原始碼 Redis OSS,並且可以使用適當的版本或工具載入。您可以使用 MemoryDB 主控台、 AWS CLI或 MemoryDB API 匯出快照。

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

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

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

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

您必須先在快照所在的相同 AWS 區域中擁有 Amazon S3 儲存貯體,才能將快照匯出至 Amazon S3 儲存貯體。授予 MemoryDB 對儲存貯體的存取權。前兩個步驟示範如何執行此操作。

警告

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

  • 當其他人可以存取您匯出快照的 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 使用者指南MemoryDB 中的身分和存取管理中的 。

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

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

建立 Amazon S3 儲存貯體
  1. 登入 AWS Management Console ,並在 https://console.aws.amazon.com/s3/:// 開啟 Amazon 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. 選擇 Create (建立)。

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

步驟 2:授予 MemoryDB 存取您的 Amazon S3 儲存貯體

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

授予 MemoryDB 存取 AWS 區域中的 S3 儲存貯體

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

授予 MemoryDB 對 S3 儲存貯體的存取權
  1. 登入 AWS Management Console ,並在 https://console.aws.amazon.com/s3/:// 開啟 Amazon 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:匯出 MemoryDB 快照

現在您已建立 S3 儲存貯體,並授予 MemoryDB 存取該儲存貯體的許可。將 S3 物件擁有權變更為已啟用 ACLs - 儲存貯體擁有者優先。接下來,您可以使用 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 儲存貯體必須與 MemoryDB 快照位於相同的 AWS 區域。

將 MemoryDB 快照匯出至 Amazon S3 儲存貯體
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/memorydb/ 開啟 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:授予 MemoryDB 存取您的 Amazon S3 儲存貯體

    3. 請選擇 Copy (複製)。

注意

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

  • 尚未在 S3 儲存貯體上授予 MemoryDB READ 許可 %s。

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

  • 尚未授予 S3 儲存貯體上的 MemoryDB WRITE 許可 %s。

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

  • MemoryDB 尚未在 S3 儲存貯體上授予 READ_ACP 許可 %s。

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

如果您想要將快照複製到另一個 AWS 區域,請使用 Amazon S3 將其複製。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的複製物件

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

參數
  • --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:授予 MemoryDB 存取您的 Amazon S3 儲存貯體

下列操作會將快照複製到 my-s3-bucket。

若為 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:授予 MemoryDB 存取您的 Amazon S3 儲存貯體 以新增指定的許可,然後重試匯出您的快照。

  • 尚未在 S3 儲存貯體上授予 MemoryDB READ 許可 %s。

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

  • 尚未授予 S3 儲存貯體上的 MemoryDB WRITE 許可 %s。

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

  • MemoryDB 尚未在 S3 儲存貯體上授予 READ_ACP 許可 %s。

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

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

如果您想要將快照複製到另一個 AWS 區域,請使用 Amazon S3 複本。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的複製物件

使用這些參數的 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:授予 MemoryDB 存取您的 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:授予 MemoryDB 存取您的 Amazon S3 儲存貯體 以新增指定的許可,然後重試匯出您的快照。

  • 尚未在 S3 儲存貯體上授予 MemoryDB READ 許可 %s。

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

  • 尚未授予 S3 儲存貯體上的 MemoryDB WRITE 許可 %s。

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

  • MemoryDB 尚未在 S3 儲存貯體上授予 READ_ACP 許可 %s。

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

如需詳細資訊,請參閱 CopySnapshot

如果您想要將快照複製到另一個 AWS 區域,請使用 Amazon S3 複本將匯出的快照複製到另一個 AWS 區域的 Amazon S3 儲存貯體。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的複製物件