

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

# mysqldump 和 mysqlpump
<a name="mysqldump-and-mysqlpump"></a>

[mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) 和 [mysqlpump](https://dev.mysql.com/doc/refman/8.0/en/mysqlpump.html) 是 MySQL 的原生資料庫備份工具。MariaDB 支援 mysqldump，但不支援 mysqlpump。這兩種工具都會建立邏輯備份，並且是 MySQL 用戶端程式的一部分。mysqldump 支援單執行緒處理。mysqlpump 支援資料庫和資料庫內物件的平行處理，以加速傾印程序。它在 MySQL 5.7.8 版中推出。MySQL 8.4 版中已移除 mysqlpump。

下圖顯示使用 mysqldump 或 mysqlpump 備份檔案遷移資料庫時涉及的高階步驟。



![\[遷移 mysqldump 或 mysqlpump 備份檔案並將其還原至 AWS 資料庫執行個體的圖表。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/migration-large-mysql-mariadb-databases/images/mysqldump-mysqlpump-migration-aws.png)


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

1. 在內部部署伺服器上安裝 MySQL Shell。如需說明，請參閱 [ MySQL 文件中的安裝 MySQL Shell](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install-linux-quick.html)。 MySQL 這會同時安裝 mysqldump 和 mysqlpump。

1. 使用 mysqldump 或 mysqlpump，建立來源現場部署資料庫的備份。如需說明，請參閱 MySQL 文件中的 [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) 和 [mysqlpump](https://dev.mysql.com/doc/refman/8.0/en/mysqlpump.html)，或參閱 MariaDB 文件中的[使用 mysqldump 進行備份](https://mariadb.com/kb/en/making-backups-with-mysqldump/)。如需叫用 MySQL 程式和指定選項的詳細資訊，請參閱[使用 MySQL 程式](https://dev.mysql.com/doc/refman/8.0/en/programs-using.html)。

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. 使用原生還原方法來還原目標資料庫上的備份。如需說明，請參閱 MySQL 文件中的[重新載入 SQL 格式備份](https://dev.mysql.com/doc/refman/8.0/en/reloading-sql-format-dumps.html)，或參閱 MariaDB 文件中的[從傾印檔案還原資料](https://mariadb.com/kb/en/restoring-data-from-dump-files/)。

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-mysqlpump-mysqldump"></a>
+ mysqldump 和 mysqlpump 包含在 MySQL Server 安裝中
+ 這些工具產生的備份檔案採用更易於讀取的格式。
+ 還原備份檔案之前，您可以使用標準文字編輯器修改產生的 .sql 檔案。
+ 您可以備份特定資料表、資料庫，甚至是特定資料選擇。
+ mysqldump 和 mysqlpump 與機器架構無關。

## 限制
<a name="limitations-mysqlpump-mysqldump"></a>
+ mysqldump 是單執行緒備份程序。進行備份的效能適用於小型資料庫，但當備份大小大於 10 GB 時，可能會變得效率低下。
+ 邏輯格式的備份檔案非常龐大，特別是當儲存為文字時，建立和還原速度通常很慢。
+ 資料還原可能會很慢，因為在目標資料庫執行個體中重新套用 SQL 陳述式涉及密集磁碟 I/O 和 CPU 處理，以進行插入、索引建立和參考完整性限制強制執行。
+ MySQL 5.7.8 以前的版本或 8.4 及更新版本不支援 mysqlpump 公用程式。
+ 根據預設，mysqlpump 不會備份系統資料庫，例如 `performance_schema`或 `sys`。若要備份部分系統資料庫，請在命令列中明確命名它。
+ mysqldump 不會備份 InnoDB `CREATE TABLESPACE`陳述式。

**注意**  
只有在您將 MySQL 或 MariaDB 資料庫備份還原至 EC2 執行個體時，CREATE TABLESPACE 陳述式和系統資料庫的備份才有用。這些備份不會用於 Amazon RDS 或 Aurora。

## 最佳實務
<a name="best-practices-mysqlpump-mysqldump"></a>
+ 當您還原資料庫備份時，請在目標資料庫 的工作階段層級停用金鑰檢查`FOREIGN_KEY_CHECKS`，例如 。這會增加還原速度。
+ 確定資料庫使用者有足夠的[權限](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html)來建立和還原備份。