在AWS RDS实例之间移动数据

时间:2017-03-02 08:41:07

标签: mysql amazon-web-services amazon-s3 amazon-rds

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

- 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中实现这一目标?或者还有其他解决方案吗?

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

3 个答案:

答案 0 :(得分: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. 然后创建一个任务,将数据从Source(第一个RDS)导入到 目的地(第二个RDS)。

  6. 在迁移类型中,如果要加载现有数据,请选择 迁移现有数据,或者如果您尝试同步实时数据 选择正在进行的更改

  7. 在任务设置下,选择T arget table preparation mode = Do. 什么都没有。

  8. 选中启用日志记录复选框,如果有任何问题,它将有助于调试 错误。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

数据管道更适用于重复流程。如果你只是想做一次性操作,似乎有很多额外的麻烦。也许更容易启动具有良好网络吞吐量的实例,附加足够大的EBS卷来保存数据并使用命令行工具(如mysqldump)来移动数据。

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