將備份還原至 Amazon RDS for MySQL 資料庫執行個體 - Amazon Relational Database Service

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

將備份還原至 Amazon RDS for MySQL 資料庫執行個體

Amazon RDS支援使用備份檔案匯入我的SQL資料庫。您可以建立資料庫的備份,將其存放在 Amazon S3 上,然後將備份檔案還原至執行 My 的新 Amazon RDS 資料庫執行個體SQL。

本節所述的案例會還原內部部署資料庫的備份。只要可以存取資料庫,您就可以將此技術用於其他位置的資料庫,例如 Amazon EC2或非AWS 雲端服務。

您可以在下圖中找到支援的案例。

從SQL S3 匯入備份檔案。

所有 中的 MySQL 都支援從 Amazon S3 匯入備份檔案 AWS 區域。

如果您的內部部署資料庫在建立、複製和還原備份檔案時可以離線,建議您RDS使用備份檔案將資料庫匯入 Amazon。如果資料庫無法離線,您可以在RDS透過 Amazon S3 遷移至 Amazon 之後,使用二進位日誌 (binlog) 複寫來更新資料庫,如本主題所述。如需詳細資訊,請參閱使用外部來源執行個體設定二進位日誌檔案位置複寫。您也可以使用 AWS Database Migration Service 將資料庫遷移至 Amazon RDS。如需詳細資訊,請參閱什麼是 AWS Database Migration Service?

設定 以將備份檔案從 Amazon S3 匯入 Amazon 的概觀 RDS

以下是您需要設定的元件,以將備份檔案從 Amazon S3 匯入 AmazonRDS:

  • 用來儲存備份檔案的 Amazon S3 儲存貯體。

  • 由 Percona 建立的內部部署資料庫備份 XtraBackup。

  • 允許 Amazon RDS存取儲存貯體的 AWS Identity and Access Management (IAM) 角色。

如果您已經有 Amazon S3 儲存貯體,則可直接使用。如果沒有,您可以建立新的 Amazon S3 儲存貯體。如果您要建立新的儲存貯體,請參閱建立儲存貯體

使用 Percona XtraBackup 工具建立備份。如需詳細資訊,請參閱建立資料庫備份

如果您已有角色,您可以使用該IAM角色。如果您沒有角色,您可以手動建立新的IAM角色。或者,您也可以選擇在使用 還原資料庫時,讓精靈為您在帳戶中建立新的IAM角色 AWS Management Console。如果您想要手動建立新IAM角色,或將信任和許可政策連接至現有IAM角色,請參閱 手動建立 IAM 角色。如果您想要為您建立新的IAM角色,請遵循 中的程序主控台

建立資料庫備份

使用 Percona XtraBackup 軟體建立備份。建議您使用最新版本的 Percona XtraBackup。您可以從 XtraBackup Download Percona 安裝 Percona XtraBackup

警告

建立資料庫備份時, XtraBackup 可能會在 xtrabackup_info 檔案中儲存憑證。請務必檢查該檔案,確保其中的 tool_command 設定不包含任何敏感資訊。

注意

對於 MySQL 8.0 遷移,您必須使用 Percona XtraBackup 8.0。Percona XtraBackup 8.0.12 和更新版本支援 My 的所有版本遷移SQL。如果您要遷移至RDS適用於 MySQL 8.0.20 或更新版本的 ,則必須使用 Percona XtraBackup 8.0.12 或更新版本。

對於 MySQL 5.7 遷移,您也可以使用 Percona XtraBackup 2.4。對於舊版 MySQL 版本的遷移,您也可以使用 Percona XtraBackup 2.3 或 2.4。

您可以使用 Percona 建立 MySQL 資料庫檔案的完整備份 XtraBackup。或者,如果您已使用 Percona XtraBackup 備份我的SQL資料庫檔案,則可以上傳現有的完整和增量備份目錄和檔案。

如需使用 Percona 備份資料庫的詳細資訊 XtraBackup,請參閱 Percona 網站上的 Percona XtraBackup 文件 xtrabackup 二進位。

使用 Percona 建立完整備份 XtraBackup

若要建立可從 Amazon S3 還原的 MySQL 資料庫檔案的完整備份,請使用 Percona XtraBackup 公用程式 (xtrabackup) 備份資料庫。

例如,下列命令會建立 MySQL 資料庫的備份,並將檔案存放在資料夾/on-premises/s3-restore/backup資料夾中。

xtrabackup --backup --user=<myuser> --password=<password> --target-dir=</on-premises/s3-restore/backup>

如果要將備份壓縮成單一檔案 (稍後可視需要分割),您可以將備份儲存為下列其中一種格式:

  • Gzip (.gz)

  • tar (.tar)

  • Percona xbstream (.xbstream)

注意

Percona XtraBackup 8.0 僅支援 Percona xbstream 壓縮。

下列命令會建立 MySQL 資料庫分割為多個 Gzip 檔案的備份。

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | gzip - | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar.gz

下列命令會建立 MySQL 資料庫分割為多個 tar 檔案的備份。

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar

下列命令會建立 MySQL 資料庫分割為多個 xbstream 檔案的備份。

xtrabackup --backup --user=<myuser> --password=<password> --stream=xbstream \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.xbstream
注意

如果您看到下列錯誤,可能是因為在命令中混合檔案格式所致:

ERROR:/bin/tar: This does not look like a tar archive

將增量備份與 Percona 搭配使用 XtraBackup

如果您已使用 Percona XtraBackup 執行 MySQL 資料庫檔案的完整和增量備份,則不需要建立完整備份並將備份檔案上傳到 Amazon S3。反之,您可以將現有的備份目錄和檔案複製到 Amazon S3 儲存貯體,以節省大量時間。如需使用 Percona 建立增量備份的詳細資訊 XtraBackup,請參閱增量備份

將現有的完整和增量備份檔案複製到 Amazon S3 儲存貯體時,您必須遞迴複製基本目錄的內容。這些內容包括完整備份,以及所有增量備份目錄和檔案。此副本必須保留 Amazon S3 儲存貯體中的目錄結構。Amazon RDS 會反覆執行所有檔案和目錄。Amazon RDS使用每個增量備份隨附的xtrabackup-checkpoints檔案來識別基礎目錄,並依日誌序號 (LSN) 範圍排序增量備份。

Percona 的備份考量事項 XtraBackup

Amazon 會根據檔案名稱RDS取用備份檔案。請根據檔案格式,以適當副檔名來命名備份檔案 — 例如,使用 Percona xbstream 格式儲存的檔案應該採用 .xbstream 副檔名。

Amazon 會依字母順序和自然數字順序來RDS使用備份檔案。發出 split 命令時,請使用 xtrabackup 選項,以確保依適當順序寫入和命名備份檔案。

Amazon RDS 不支援使用 Percona 建立的部分備份 XtraBackup。當您備份資料庫的來源檔案時,您無法使用 --tables--tables-exclude--tables-file--databases--databases-exclude--databases-file 選項來建立局部備份。

Amazon RDS支援使用 Percona 建立的增量備份 XtraBackup。如需使用 Percona 建立增量備份的詳細資訊 XtraBackup,請參閱增量備份

手動建立 IAM 角色

如果您沒有角色,您可以手動建立新的IAM角色。不過,如果您使用 還原資料庫 AWS Management Console,建議您遵循 中的程序,主控台並選擇為您RDS建立此新IAM角色。

若要手動建立新的IAM角色以從 Amazon S3 匯入資料庫,請建立角色以將 Amazon 的許可委派RDS至您的 Amazon S3 儲存貯體。建立IAM角色時,您會連接信任和許可政策。若要從 Amazon S3 匯入備份檔案,請使用類似下列範例的信任和許可政策。如需建立角色的詳細資訊,請參閱建立角色以將許可委派給 AWS 服務

信任和許可政策要求您提供 Amazon Resource Name (ARN)。如需ARN格式化的詳細資訊,請參閱 Amazon Resource Names (ARNs) AWS 和服務命名空間

範例 從 Amazon S3 匯入的信任政策
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole" }] }
範例 從 Amazon S3 匯入 的許可政策 — IAM使用者許可

在下列範例中,取代 iam_user_id 使用您自己的值。

{ "Version":"2012-10-17", "Statement": [ { "Sid":"AllowS3AccessRole", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::iam_user_id:role/S3Access" } ] }
範例 從 Amazon S3 匯入 的許可政策 — 角色許可

在下列範例中,取代 amzn-s3-demo-bucket 以及 prefix 使用您自己的值。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix*" }, { // If your bucket is encrypted, include the following permission. This permission allows decryption of your AWS KMS key. "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:region:customer_id:key/key_id*" ] } ] }
注意

如果包含檔案名稱字首,請在字首後面加上星號 (*)。如果您不想指定字首,則指定星號即可。

將資料從 Amazon S3 匯入至新的 MySQL 資料庫執行個體

您可以使用 AWS Management Console AWS CLI、 或 將資料從 Amazon S3 匯入新的 MySQL 資料庫執行個體RDSAPI。

將資料從 Amazon S3 匯入至新的 MySQL 資料庫執行個體
  1. 登入 AWS Management Console 並在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/

  2. 在 Amazon RDS主控台的右上角,選擇要在 AWS 區域 其中建立資料庫執行個體的 。選擇與包含資料庫備份的 Amazon S3 儲存貯體 AWS 區域 相同的 。

  3. 在導覽窗格中,選擇 Databases (資料庫)。

  4. 選擇 Restore From S3 (從 S3 還原)

    系統會顯示 Create database by restoring from S3 (從 S3 還原以建立資料庫) 頁面。

    從 S3 頁面還原來建立資料庫,您可以在其中指定從 S3 還原資料庫執行個體的詳細資訊。
  5. S3 目的地 下:

    1. 選擇包含備份的 S3 bucket (S3 儲存貯體)。

    2. (選用) 針對 S3 字首 ,輸入存放在 Amazon S3 儲存貯體中的檔案的檔案路徑字首。

      如果您未指定字首,則使用 S3 儲存貯體根資料夾中的所有檔案和資料夾來RDS建立資料庫執行個體。如果您確實指定了字首,則使用 S3 儲存貯體中的檔案和資料夾來RDS建立資料庫執行個體,其中檔案的路徑以指定的字首開頭。

      例如,假設您將備份檔案儲存在 S3 中的一個名為 backups 的子資料夾,而且有多組備份檔案,各存放於自己的目錄中 (gzip_backup1、gzip_backup2 等等)。在此例子中,指定字首 backups/gzip_backup1,即可從 gzip_backup1 資料夾中的檔案還原。

  6. Engine options (引擎選項)

    1. 針對引擎類型 ,選擇我的 SQL

    2. 對於來源引擎版本 ,選擇來源資料庫的我的SQL主要版本。

    3. 對於引擎版本 ,請在 中選擇 MySQL 主要版本的預設次要版本 AWS 區域。

      在 中 AWS Management Console,只有預設次要版本可用。您可以在匯入後升級資料庫執行個體。

  7. 針對IAM角色 ,使用允許 Amazon RDS存取 Amazon S3 儲存貯體的必要信任政策和許可政策來建立或選擇IAM角色。執行下列動作之一:

    • (建議) 選擇建立新的角色 ,然後輸入IAM角色名稱 。使用此選項, RDS 會自動為您建立具有信任政策和許可政策的角色。

    • 選擇現有IAM角色。請確定此角色符合 中的所有條件手動建立 IAM 角色

  8. 指定您的資料庫執行個體資訊。如需每項設定的相關資訊,請參閱 資料庫執行個體的設定

    注意

    務必分配足夠的記憶體給新的資料庫執行個體,以確保還原操作成功。

    您也可以選擇 Enable storage autoscaling (啟用儲存體自動調整規模),以允許未來自動增長。

  9. 視需要選擇其他設定。

  10. 選擇 Create database (建立資料庫)。

若要使用 將資料從 Amazon S3 匯入至新的 MySQL 資料庫執行個體 AWS CLI,請使用下列參數呼叫 restore-db-instance-from-s3 命令。如需每項設定的相關資訊,請參閱 資料庫執行個體的設定

注意

務必分配足夠的記憶體給新的資料庫執行個體,以確保還原操作成功。

您也可以使用 --max-allocated-storage 參數來啟用儲存體自動調整規模,以允許未來自動增長。

  • --allocated-storage

  • --db-instance-identifier

  • --db-instance-class

  • --engine

  • --master-username

  • --manage-master-user-password

  • --s3-bucket-name

  • --s3-ingestion-role-arn

  • --s3-prefix

  • --source-engine

  • --source-engine-version

範例

用於 Linux, macOS,或 Unix:

aws rds restore-db-instance-from-s3 \ --allocated-storage 250 \ --db-instance-identifier myidentifier \ --db-instance-class db.m5.large \ --engine mysql \ --master-username admin \ --manage-master-user-password \ --s3-bucket-name amzn-s3-demo-bucket \ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \ --s3-prefix bucketprefix \ --source-engine mysql \ --source-engine-version 8.0.32 \ --max-allocated-storage 1000

用於 Windows:

aws rds restore-db-instance-from-s3 ^ --allocated-storage 250 ^ --db-instance-identifier myidentifier ^ --db-instance-class db.m5.large ^ --engine mysql ^ --master-username admin ^ --manage-master-user-password ^ --s3-bucket-name amzn-s3-demo-bucket ^ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^ --s3-prefix bucketprefix ^ --source-engine mysql ^ --source-engine-version 8.0.32 ^ --max-allocated-storage 1000

若要使用 Amazon 將資料從 Amazon S3 匯入至新的 MySQL 資料庫執行個體API,請呼叫 RestoreDBInstanceFromS3 RDS 操作。

將備份檔案從 Amazon S3 匯入 Amazon 的限制和建議 RDS

以下是從 Amazon S3 匯入備份檔案的一些限制和建議:

  • 您只能將資料匯入新的資料庫執行個體,而不是現有的資料庫執行個體。

  • 您必須使用 Percona XtraBackup 來建立內部部署資料庫的備份。

  • 您無法從資料庫快照將資料匯入 Amazon S3。

  • 您無法從已在預設 MySQL 資料目錄之外定義資料表的來源資料庫遷移。

  • 您必須將資料匯入 中 MySQL 主要版本的預設次要版本 AWS 區域。例如,如果您的主要版本是 MySQL 8.0,而您 的預設次要版本 AWS 區域 是 8.0.35,則必須將資料匯入 MySQL 版本 8.0.35 資料庫執行個體。您可以在匯入後升級資料庫執行個體。如需決定預設次要版本的相關資訊,請參閱 我SQL的 Amazon RDS 版本

  • 主要版本和次要版本都不支援回溯遷移。例如,您無法從 8.0 版遷移至 5.7 版,也無法從 8.0.32 版遷移至 8.0.31 版。

  • 您無法匯入 MySQL 5.5 或 5.6 資料庫。

  • 您無法將內部部署我的SQL資料庫從一個主要版本匯入至另一個主要版本。例如,您無法將 MySQL 5.7 資料庫匯入RDS至 for MySQL 8.0 資料庫。您可以在完成匯入之後升級資料庫執行個體。

  • 您無法從加密來源資料庫還原,但可以還原至加密的 Amazon RDS 資料庫執行個體。

  • 您無法從 Amazon S3 儲存貯體中加密的備份還原。

  • 您無法從與 Amazon 資料庫執行個體不同的 Amazon S3 儲存貯體還原。 AWS 區域 RDS

  • db.t2.micro 資料庫執行個體類別上不支援從 Amazon S3 匯入。不過,您可以先還原至不同的資料庫執行個體類別,稍後再變更資料庫執行個體類別。如需執行個體類別的詳細資訊,請參閱 的資料庫執行個體類別的硬體規格

  • Amazon S3 將上傳至 Amazon S3 儲存貯體的檔案大小限制為 5 TB。如果備份檔案超過 5 TB,您必須將備份檔案分割為較小的檔案。

  • 當您還原資料庫時,會複製備份,然後在資料庫執行個體上解壓縮。因此,為資料庫執行個體佈建等於或大於備份大小總和的儲存空間,以及磁碟上原始資料庫的大小。

  • Amazon 將上傳至 Amazon S3 儲存貯體的檔案數目RDS限制為 100 萬個。如果資料庫的備份資料 (包括所有完整和增量備份) 超過 1 百萬個檔案,請使用 Gzip (.gz)、tar (.tar.gz) 或 Percona xbstream (.xbstream) 檔案將完整和增量備份檔案儲存在 Amazon S3 儲存貯體中。Percona XtraBackup 8.0 僅支援 Percona xbstream 壓縮。

  • 不會自動匯入使用者帳戶。儲存來源資料庫中的使用者帳戶,稍後再新增至新的資料庫執行個體。

  • 不會自動匯入函數。儲存來源資料庫中的函數,稍後再新增至新的資料庫執行個體。

  • 不會自動匯入預存程序。儲存來源資料庫中的預存程序,稍後再新增至新的資料庫執行個體。

  • 不會自動匯入時區資訊。記錄來源資料庫的時區資訊,稍後再設定新的資料庫執行個體的時區。如需詳細資訊,請參閱 MySQL 資料庫執行個體的本機時區

  • innodb_data_file_path 參數只能使用一個資料檔案 (預設資料檔案名稱 "ibdata1:12M:autoextend") 來設定。具有兩個資料檔或具有不同名稱之資料檔的資料庫無法使用此方法移轉。

    以下是不允許的檔案名稱範例:"innodb_data_file_path=ibdata1:50M; ibdata2:50M:autoextend""innodb_data_file_path=ibdata01:50M:autoextend"

  • 還原的資料庫大小上限是支援的資料庫大小上限減去備份大小。因此,如果支援的資料庫大小上限為 64 TiB,且備份的大小為 30 TiB,則還原的資料庫大小上限為 34 TiB,如下列範例所示:

    64 TiB - 30 TiB = 34 TiB

    如需 Amazon RDS for My 所支援資料庫大小上限的相關資訊SQL,請參閱 一般用途SSD儲存佈建的IOPSSSD儲存體