我需要在两个不同的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中实现这一目标?或者还有其他解决方案吗?
另一件事是我只需要从特定的表中移动一些行,而不是整个表或整个数据库。
答案 0 :(得分:2)
您可以使用 AWS DMS服务,这是移动大量数据的最简单方法。请按照以下步骤操作。
首先,您需要在两个RDS实例上更改 参数组 中的某些设置。
'log_bin' = 'ON'
'binlog_format' = 'ROW'
'binlog_checksum' = 'NONE'
'log_bin_use_v1_row_events' = 'ON'
从第一个RDS实例转储数据库的架构。
在第二个RDS上恢复它。
现在开始配置DMS。
首先设置端点。
然后创建一个任务,将数据从Source(第一个RDS)导入到 目的地(第二个RDS)。
在迁移类型中,如果要加载现有数据,请选择 迁移现有数据,或者如果您尝试同步实时数据 选择正在进行的更改。
在任务设置下,选择T arget table preparation mode = Do. 什么都没有。
选中启用日志记录复选框,如果有任何问题,它将有助于调试 错误。
任务开始后,您就可以看到该过程了 仪表板。
答案 1 :(得分:0)
答案 2 :(得分:0)
数据管道更适用于重复流程。如果你只是想做一次性操作,似乎有很多额外的麻烦。也许更容易启动具有良好网络吞吐量的实例,附加足够大的EBS卷来保存数据并使用命令行工具(如mysqldump)来移动数据。
就清理而言,可能会更快地提出一个查询,将要保留的行复制到临时表(或除了你不想要的行之外的所有行),然后使用重命名来交换temp原始表。然后放下原始表格。