Amazon RDS - MySQL 数据库导出导入


Amazon RDS MySQL 提供了将数据导入数据库和从数据库导出数据的简单方法。在我们能够成功连接到 MySQL 数据库后,我们可以使用 CLI 工具运行导入和导出命令,以将其他来源的数据传入和传出 RDS 数据库。以下是决定将数据导入 Amazon RDS - MySQL 数据库的方法时要考虑的场景。

来自现有 MySQL 数据库

现有的 MySQL 数据库可以存在于本地或另一个 EC2 实例中。我们所做的图解如下所示。

本地.jpg

从本地数据库创建备份

第一步,我们使用以下命令创建本地数据库的备份。

mysqldump -u user -p[user_password] [database_name] > backupfile.sql

将创建一个名为 backupfile.sql 的文件,其中包含表结构以及要使用的数据。

将备份文件存储在S3中。

将上面创建的备份文件上传到目标 RDS MySQL DB 数据库所在区域中预先确定的 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 数据库中的数据导入到另一个 RDS MYSQL 数据库中。例如,要创建灾难恢复数据库或创建仅用于业务报告等的数据库。在这种情况下,我们创建只读副本,这是其源数据库的副本,然后将该只读副本提升到新的数据库实例。它们用于防止当我们想要复制数据时从原始源数据库直接大量读取。

创建只读副本

aws rds create-db-instance-read-replica \
    --db-instance-identifier myreadreplica \
    --source-db-instance-identifier mydbinstance

将只读副本提升为数据库实例

现在我们有了副本,我们可以将其提升为独立的数据库实例。这将满足我们将数据从 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平台。下图解释了整个过程。它的工作原理与上一节中描述的复制原理类似。

amazon_dms.jpg

从 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