2017-03-02 71 views
1

我需要在两个不同的rds实例上的相同mysql数据库之间移动数百万行。我想过的方法是:在AWS RDS实例之间移动数据

- use data-pipeline to export data from the first instance to amazon-s3 
- use data-pipeline to import data from amazon-s3 to the second instance 

我的问题是我需要删除第一个实例的数据在最后。由于我们正在讨论大量的数据,我曾考虑过创建一个存储过程来批量删除行。有没有办法在aws中实现这一点?或者还有其他解决方案吗?

另一件事是我只需要从特定的表中移动一些行,而不是整个表或整个数据库。

回答

0

如果要删除一个表中的所有数据,请使用TRUNCATE TABLE而不是删除语句。它会为你节省很多时间。

2

您可以使用AWS DMS服务这是移动大量数据的最简单方法。请按照以下步骤。

首先,您需要更改参数组在两个RDS实例中的一些设置。

'log_bin' = 'ON' 

'binlog_format' = 'ROW' 

'binlog_checksum' = 'NONE' 

'log_bin_use_v1_row_events' = 'ON' 
  1. 采取从第一RDS实例数据库的模式的转储。

  2. 在第二个RDS上恢复它。

  3. 现在开始配置DMS。

  4. 首先安装端点。

  5. 然后创建一个任务,将数据从源(第一个RDS)导入到 目标(第二个RDS)。

  6. 在迁移类型,如果要加载现有的数据选择 迁移现有数据,或者如果您尝试同步实时数据,然后 选择不断变化

  7. 在任务设置下,选择T arget表格准备模式=执行 没有。

  8. 检查启用日志复选框,它会帮助任何 错误的情况下进行调试。

  9. 任务开始后,您可以在 仪表板中看到该过程。

+0

事情是,我只需要从特定的表中移动一些行,而不是整个表或整个数据库。 –

0

数据管道更多用于重复性过程。如果你只是想做一次性操作,看起来像很多额外的麻烦。也许更容易启动一个体面的网络吞吐量的实例,附加一个足够大的EBS卷来保存您的数据并使用命令行工具如mysqldump来移动数据。

就清理而言,可能会更快地提出一个查询,将要保留的行复制到临时表(或除了不想要的行之外的所有行),然后使用重命名将换出临时表为原始。然后放下原来的表格。