

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

# MyDumper
<a name="mydumper"></a>

[MyDumper](https://github.com/mydumper/mydumper#what-is-mydumper) (GitHub) 是一種開放原始碼邏輯遷移工具，包含兩個公用程式：
+ MyDumper 匯出 MySQL 資料庫的一致備份。它支援使用多個平行執行緒來備份資料庫，每個可用的 CPU 核心最多一個執行緒。
+ myloader 會讀取 MyDumper 建立的備份檔案、連線至目標資料庫執行個體，然後還原資料庫。

下圖顯示使用 MyDumper 備份檔案遷移資料庫時涉及的高階步驟。此架構圖包含三個選項，可將備份檔案從現場部署資料中心遷移至 中的 EC2 執行個體 AWS 雲端。



![遷移 MyDumper 備份檔案並使用 myloader AWS 在資料庫執行個體上還原檔案的圖表。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/migration-large-mysql-mariadb-databases/images/mydumper-myloader-migration-aws.png)


以下是使用 MyDumper 將資料庫遷移至 的步驟 AWS 雲端：

1. 安裝 MyDumper 和 myloader。如需說明，請參閱[如何安裝 mydumper/myloader ](https://github.com/mydumper/mydumper#how-to-install-mydumpermyloader)(GitHub)。

1. 使用 MyDumper 建立來源 MySQL 或 MariaDB 資料庫的備份。如需說明，請參閱[如何使用 MyDumper](https://github.com/mydumper/mydumper#how-to-use-mydumper)。

1.  AWS 雲端 使用下列其中一種方法，將備份檔案移至 中的 EC2 執行個體：

   **方法 3A** – 將 [Amazon FSx](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/using-file-shares.html) 或 [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html) 檔案系統掛載至執行資料庫執行個體的內部部署伺服器。您可以使用 AWS Direct Connect 或 Site-to-Site VPN 來建立連線。您可以直接將資料庫備份到掛載的檔案共享，也可以透過將資料庫備份到本機檔案系統，然後將其上傳到掛載的 FSx 或 EFS 磁碟區，以兩個步驟執行備份。接著，在 EC2 執行個體上掛載也掛載在內部部署伺服器上的 Amazon FSx 或 Amazon EFS 檔案系統。

   **方法 3B** – 使用、 AWS CLI AWS SDK 或 Amazon S3 REST API，將備份檔案直接從現場部署伺服器移至 S3 儲存貯體。如果目標 S3 儲存貯體位於 AWS 區域 遠離資料中心的 中，您可以使用 [Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration.html) 更快速地傳輸檔案。使用 [s3fs-fuse](https://github.com/s3fs-fuse/s3fs-fuse) 檔案系統在 EC2 執行個體上掛載 S3 儲存貯體。

   **方法 3C** – 在內部部署資料中心安裝 AWS DataSync 代理程式，然後使用 將備份檔案[AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html)移至 Amazon S3 儲存貯體。使用 [s3fs-fuse](https://github.com/s3fs-fuse/s3fs-fuse) 檔案系統在 EC2 執行個體上掛載 S3 儲存貯體。
**注意**  
您也可以使用 Amazon S3 File Gateway 將大型資料庫備份檔案傳輸到 中的 S3 儲存貯體 AWS 雲端。如需詳細資訊，請參閱本指南中的 [使用 Amazon S3 File Gateway 傳輸備份檔案](amazon-s3-file-gateway.md)。

1. 使用 myloader 還原目標資料庫執行個體上的備份。如需說明，請參閱 [myloader 用量](https://github.com/mydumper/mydumper_docs/blob/0e5cd71a5549c8a5de0105adf4d5f95953eadb67/myloader_usage.rst) (GitHub)。

1. （選用） 您可以設定來源資料庫與目標資料庫執行個體之間的複寫。您可以使用二進位日誌 (binlog) 複寫來減少停機時間。如需詳細資訊，請參閱下列內容：
   + 在 MySQL 文件中[設定複寫來源組態](https://dev.mysql.com/doc/refman/5.7/en/replication-howto-masterbaseconfig.html) 
   + 對於 Amazon Aurora，請參閱下列內容：
     + [使用 Aurora 文件中的複寫將 Amazon Aurora MySQL 資料庫叢集與 MySQL 資料庫同步](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html#AuroraMySQL.Migrating.ExtMySQL.S3.RepSync) 
     + [Aurora 文件中的在 Amazon Aurora 中使用 binlog 複寫](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.html) 
   + 如需 Amazon RDS，請參閱下列內容：
     + [在 Amazon RDS 文件中使用 MySQL 複寫](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_MySQL.Replication.html) 
     + [在 Amazon RDS 文件中使用 MariaDB 複寫](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_MariaDB.Replication.html) 
   + 對於 Amazon EC2，請參閱下列內容：
     + 在 MySQL 文件中[設定二進位日誌檔案位置型複寫](https://dev.mysql.com/doc/mysql-replication-excerpt/8.0/en/replication-howto.html) 
     + 在 MySQL [文件中設定複本](https://dev.mysql.com/doc/refman/8.0/en/replication-setup-replicas.html) 
     + 在 MariaDB 文件中[設定複寫](https://mariadb.com/kb/en/setting-up-replication/) 

## 優點
<a name="advantages-mydumper"></a>
+ MyDumper 使用多執行緒支援平行處理，可提高備份和還原操作的速度。
+ MyDumper 可避免昂貴的字元集轉換常式，這有助於確保程式碼具有高效率。
+ MyDumper 透過為資料表和中繼資料傾印個別檔案，簡化資料檢視和剖析。
+ MyDumper 會維護所有執行緒的快照，並提供主要和次要日誌的準確位置。
+ 您可以使用 Perl 相容規則運算式 (PCRE) 來指定是否包含或排除資料表或資料庫。

## 限制
<a name="limitations-mydumper"></a>
+ 如果您的資料轉換程序需要一般格式而非 SQL 格式的中繼傾印檔案，您可以選擇不同的工具。
+ myloader 不會自動匯入資料庫使用者帳戶。如果您要將備份還原至 Amazon RDS 或 Aurora，請重新建立具有所需許可的使用者。如需詳細資訊，請參閱 Amazon RDS 文件中的[主使用者帳戶權限](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.MasterAccounts.html)。如果您要將備份還原至 Amazon EC2 資料庫執行個體，您可以手動匯出來源資料庫使用者帳戶，並將其匯入 EC2 執行個體。

## 最佳實務
<a name="best-practices-mydumper"></a>
+ 設定 MyDumper 將每個資料表分割為區段，例如每個區段中的 10，000 個資料 列，並將每個區段寫入個別的檔案中。這可讓您稍後平行匯入資料。
+ 如果您使用的是 InnoDB 引擎，請使用 `--trx-consistency-only`選項將鎖定降至最低。
+ 使用 MyDumper 匯出資料庫可能會變得需要大量讀取，而程序可能會影響生產資料庫的整體效能。如果您有複本資料庫執行個體，請從複本執行匯出程序。從複本執行匯出之前，請先停止複寫 SQL 執行緒。這有助於匯出程序更快速地執行。
+ 請勿在尖峰營業時間匯出資料庫。避免尖峰時間可在資料庫匯出期間穩定主要生產資料庫的效能。
+ Amazon RDS for MySQL 不支援 `keyring_aws` 外掛程式。如需詳細資訊，請參閱[已知問題和限制](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html#MySQL.Concepts.Limits.KeyRing)。若要將內部部署加密資料表遷移至 Amazon RDS 執行個體，在備份指令碼中，您需要從語法中移除 `ENCRYPTION`或 `DEFAULT ENCRYPTION` `CREATE TABLE` 。對於靜態加密，您可以使用 AWS Key Management Service (AWS KMS) 金鑰。如需詳細資訊，請參閱[加密 Amazon RDS 資源](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html)。