从大的percona mysql db中删除很多行

问题描述:

我需要对案例有新意见。任何想法都表示赞赏。从大的percona mysql db中删除很多行

输入:我们有一个巨大的percona mysql(5.5)数据库,需要几个Tb(兆兆字节)。 innodb引擎表。 应尽可能快地删除该尺寸的一半以上(2/3)。 另外我们有主从配置。

达到,我考虑了以下解决方案的最快方法: 执行从属服务器上的每个表(以避免停工停产):

  1. 停止复制
  2. 选择不排删除到与原表具有相同结构的空的新表中
  3. 将原始表重命名为“table_old”,新表 - 更正名称
  4. 删除原表“table_old”
  5. 开始复制

问题是我们有很多FK约束。我也害怕在这个过程中打破复制。

问题: 1)在这个解决方案中,FK约束会带来什么样的潜在问题? 2)如何不破坏复制? 3)意见?替代方案?

预先感谢您。

,如果你可以把一会儿数据库脱机(又名无人访问该数据库除了你),你可以跟你的解决方案,但你需要删除FK之前参与和之后他们重建。您还应该检查AUTO_INCREMENT列,这些列将通过复制操作更改编号。

的FK,如果你想在网上分贝需要,我曾与一些巨大的日志表类似的问题,任何尝试一次可能会锁定数据库或损坏表中删除所有记录。

,所以我去了一个缓慢的办法,我提出,将删除使用聚集主键的表行的批次过程,然后我安排其运行每n秒。