Amazon RDS – MySQL 数据库导出导入
Amazon RDS – MySQL 数据库导出导入
Amazon RDS MySQL 提供了将数据导入数据库和从数据库导出数据的简单方法。在我们能够成功连接到 MySQL 数据库后,我们可以使用 CLI 工具运行导入和导出命令来从其他来源获取进出 RDS 数据库的数据。以下是在决定将数据导入 Amazon RDS – MySQL 数据库的方法时要考虑的场景。
从现有的 MySQL 数据库
现有的 MySQL 数据库可以存在于本地或另一个 EC2 实例中。我们所做的工作如下图所示。
从本地数据库创建备份
作为第一步,我们使用以下命令创建本地数据库的备份。
mysqldump -u user -p[user_password] [database_name] > backupfile.sql
创建名为 backupfile.sql 的文件,其中包含表结构以及要使用的数据。
将备份文件存储在 S3 中。
将上面创建的备份文件上传到目标 RDS MySQL 数据库所在区域中预先确定的 Amazon S3 存储桶。您可以点击此链接了解如何上传。
将数据从 Amazon S3 导入 RDS-MySQL 数据库
您可以使用以下 Amazon CLI 命令将数据从 S3 导入 MySQL 数据库。
aws rds restore-db-instance-from-s3 \ --allocated-storage 125 \ --db-instance-identifier tddbidentifier \ --db-instance-class db.m4.small \ --engine mysql \ --master-user-name masterawsuser \ --master-user-password masteruserpassword \ --s3-bucket-name tpbucket \ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \ --s3-prefix bucketprefix \ --source-engine mysql \ --source-engine-version 5.6.27
来自另一个 RDS-MySQL 实例
可能存在您希望将现有 RDS MYSQL DB 中的数据引入另一个 RDS MYSQL DB 的情况。例如,创建一个灾难恢复数据库或创建一个仅用于业务报告等的数据库。在这种情况下,我们创建作为其源数据库副本的只读副本,然后将该只读副本提升到新的数据库实例。它们用于防止在我们要复制数据时直接从原始源 DB 中进行大量读取。
创建只读副本
aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-instance-identifier mydbinstance
将只读副本提升为数据库实例
现在有了副本,我们可以将其提升为独立的数据库实例。这将满足我们将数据从 o RDS – Mysql DB 导入新数据库的最终需求。以下命令用于完成只读副本向数据库实例的提升。
aws rds create-db-instance-read-replica \ --db-instance-identifier readreplica_name \ --region target_region_name --db-subnet-group-name subnet_name --source-db-instance-identifier arn:aws:rds:region_name:11323467889012:db:mysql_instance1
从任何数据库
为了将任何其他数据库中的数据导入 Amazon RDS – MySQL,我们必须使用亚马逊数据迁移服务,也称为 Amazon DMS。它使用 Schema 转换工具将现有数据库转换为 MYSQL 平台。下图解释了整个过程。此外,它的工作原理与上一节中描述的复制原理类似。
从 MySQL 导出数据
从 Amazon RDS Mysql DB 导出数据是一个直接的过程,它的工作原理与我们上面看到的相同。以下是执行导出过程的步骤。
- 启动在 Amazon RDS 外部运行的 MySQL 实例。
- 将 MySQL 数据库实例指定为复制源。
- 使用 mysqldump 将数据库从 Amazon RDS 实例传输到 Amazon RDS 外部的实例。
下面是mysqldum命令的代码
mysqldump -h RDS instance endpoint \ -u user \ -p password \ --port=3306 \ --single-transaction \ --routines \ --triggers \ --databases database database2 \ --compress \ --compact | mysql \ -h MySQL host \ -u master user \ -p password \ --port 3306