本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
匯出快照
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 儲存貯體
-
登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/
。 -
選擇 Create Bucket (建立儲存貯體)。
-
在 Create a Bucket - Select a Bucket Name and Region (建立儲存貯體 - 選取儲存貯體名稱和區域) 中,執行下列動作:
-
在 Bucket Name (儲存貯體名稱) 中,輸入 Amazon S3 儲存貯體的名稱。
-
從區域清單中,為您的 Amazon S3 儲存貯體選擇一個 AWS 區域。此 AWS 區域必須與您要匯出的 MemoryDB 快照集所在的 AWS 區域相同。
-
選擇建立。
-
如需有關建立 Amazon S3 儲存貯體的詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的建立儲存貯體。
步驟 2:將記憶體資料庫存取權授予您的 Amazon S3 儲存貯體
AWS 2019 年 3 月 20 日之前引入的區域預設為啟用狀態。您可以立即開始在這些 AWS 區域中工作。2019 年 3 月 20 日之後引入的區域預設為停用狀態。您必須先啟用或選擇加入這些區域,才能使用這些區域,如管理 AWS 區域中所述。
授與某個區域中 S3 儲存貯體的記憶體資料庫存取權 AWS
若要在 AWS 區域中的 Amazon S3 儲存貯體上建立適當的許可,請執行下列步驟。
授與 S3 儲存貯體的記憶體資料庫存取權
-
登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/
。 -
選擇您要複製快照的目標 Amazon S3 儲存貯體的名稱。這應該是您在步驟 1:建立 Amazon S3 儲存貯體中建立的 S3 儲存貯體。
-
選擇 [權限] 索引標籤,然後在 [權限] 底下選擇 [值區
-
更新政策以授予 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 儲存貯體
-
若要查看快照清單,請從左側導覽窗格中選擇 [快照]。
-
從快照清單中,選擇要匯出之快照名稱左側的圓鈕。
-
請選擇 Copy (複製)。
-
在 Create a Copy of the Backup? (是否建立備份複本?) 中,執行下列動作:
-
在 [新增快照名稱] 方塊中,輸入新快照的名稱。
該名稱必須介於 1 到 1,000 個字元之間,而且能夠以 UTF-8 編碼。
MemoryDB 會新增分片識別碼,
.rdb
以及您在此處輸入的值。例如,如果您輸入my-exported-snapshot
,MemoryDB 會建立。my-exported-snapshot-0001.rdb
-
從「目標 S3 位置」清單中,選擇您要將快照複製到其中的 Amazon S3 儲存貯體的名稱 (您在其中建立的儲存貯體步驟 1:建立 Amazon S3 儲存貯體)。
目標 S3 位置必須是快照 AWS 區域中具有以下許可的 Amazon S3 儲存貯體,匯出程序才能成功。
物件存取權 - Read (讀取) 和 Write (寫入)。
許可存取權 - Read (讀取)。
如需詳細資訊,請參閱 步驟 2:將記憶體資料庫存取權授予您的 Amazon S3 儲存貯體。
-
請選擇 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-namemy-exported-snapshot
\ --target-bucketmy-s3-bucket
針對 Windows:
aws memorydb copy-snapshot ^ --source-snapshot-name
automatic.my-primary-2021-06-27-03-15
^ --target-snapshot-namemy-exported-snapshot
^ --target-bucketmy-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 簡單儲存服務使用者指南中的複製物件。