mysqldump 和 mysqlpump
mysqldump
下图显示了使用 mysqldump 或 mysqlpump 备份文件迁移数据库所涉及的概要步骤。
以下是使用 mysqldump 或 mysqlpump 将数据库迁移到 AWS 架构的步骤:
-
在本地服务器上安装 MySQL Shell。有关说明,请参阅 MySQL 文档中的 Installing MySQL Shell
。这将同时安装 mysqldump 和 mysqlpump。 -
使用 mysqldump 或 mysqlpump 创建源本地数据库的备份。有关说明,请参阅 MySQL 文档中的 mysqldump
和 mysqlpump ,或者参阅 MariaDB 文档中的 Making Backups with mysqldump 。有关调用 MySQL 程序和指定选项的更多信息,请参阅 Using MySQL programs 。 -
使用以下方法之一,将备份文件移到 AWS 架构中的 EC2 实例:
方法 3A:将 Amazon FSx 或 Amazon Elastic File System(Amazon EFS)文件系统挂载到运行数据库实例的本地服务器。您可以使用 AWS Direct Connect 或 Site-to-Site VPN 来建立连接。您可以直接将数据库备份到已挂载的文件共享,也可以分两步执行备份,方法是将数据库备份到本地文件系统,然后将其上传到已挂载的 FSx 或 EFS 卷。接下来,将 Amazon FSx 或 Amazon EFS 文件系统(也挂载在本地服务器上)挂载到 EC2 实例上。
方法 3B:使用 AWS CLI、AWS SDK 或 Amazon S3 REST API 将备份文件从本地服务器直接移到 S3 存储桶。如果目标 S3 存储桶位于距离数据中心较远的 AWS 区域,则可以使用 Amazon S3 Transfer Acceleration 更快地传输文件。使用 s3fs-fuse
文件系统在 EC2 实例上挂载 S3 存储桶。 方法 3C:在本地数据中心安装 AWS DataSync 代理,然后使用 AWS DataSync 将备份文件移到 Amazon S3 存储桶。使用 s3fs-fuse
文件系统在 EC2 实例上挂载 S3 存储桶。 注意
您也可以使用 Amazon S3 文件网关将大型数据库备份文件传输到 AWS 架构中的 S3 存储桶。有关更多信息,请参阅本指南中的使用 Amazon S3 文件网关传输备份文件。
-
使用原生恢复方法恢复目标数据库上的备份。有关说明,请参阅 MySQL 文档中的 Reloading SQL-Format Backups
,或参阅 MariaDB 文档中的 Restoring Data from Dump Files 。 -
(可选)您可以在源数据库和目标数据库实例之间设置复制。您可以使用二进制日志(binlog)复制来减少停机时间。有关更多信息,请参阅下列内容:
-
MySQL 文档中的 Setting the replication source configuration
-
对于 Amazon Aurora,请参阅以下内容:
-
Aurora 文档中的通过复制同步 Amazon Aurora MySQL 数据库集群和 MySQL 数据库
-
Aurora 文档中的在 Amazon Aurora 中使用二进制日志复制
-
-
对于 Amazon RDS,请参阅以下内容:
-
Amazon RDS 文档中的使用 MySQL 复制
-
Amazon RDS 文档中的使用 MariaDB 复制
-
-
对于 Amazon EC2,请参阅以下内容:
-
MySQL 文档中的设置二进制日志文件基于位置的复制
-
MySQL 文档中的设置副本
-
MariaDB 文档中的设置复制
-
-
优点
-
mysqldump 和 mysqlpump 包含在 MySQL Server 安装中
-
这些工具生成的备份文件采用更易读的格式。
-
在恢复备份文件之前,您可以使用标准文本编辑器修改生成的.sql 文件。
-
您可以备份特定的表、数据库,甚至是特定的数据选择。
-
mysqldump 和 mysqlpump 是独立于机器架构的。
限制
-
mysqldump 是一个单线程备份过程。对于小型数据库,备份性能良好,但当备份大小超过 10 GB 时,效率可能会降低。
-
逻辑格式的备份文件很大,尤其是在另存为文本时,而且创建和恢复速度通常很慢。
-
数据恢复可能很慢,因为在目标数据库实例中重新应用 SQL 语句涉及大量的磁盘 I/O 和 CPU 处理,用于插入、创建索引和强制执行引用完整性约束。
-
5.7.8 之前的 MySQL 版本或 8.4 版及更高版本不支持 mysqlpump 实用程序。
-
默认情况下,mysqlpump 不备份系统数据库,例如
performance_schema或sys。要备份部分系统数据库,请在命令行中对其进行显式命名。 -
mysqldump 不备份 InnoDB
CREATE TABLESPACE语句。
注意
只有在将 MySQL 或 MariaDB 数据库备份恢复到 EC2 实例时,CREATE TABLESPACE 语句和系统数据库的备份才有用。这些备份不用于 Amazon RDS 或 Aurora。
最佳实践
-
恢复数据库备份时,在目标数据库的会话级别禁用密钥检查,例如
FOREIGN_KEY_CHECKS。这会提高恢复速度。 -
确保数据库用户具有足够的权限
来创建和恢复备份。