从大的percona mysql db中删除很多行
问题描述:
我需要对案例有新意见。任何想法都表示赞赏。从大的percona mysql db中删除很多行
输入:我们有一个巨大的percona mysql(5.5)数据库,需要几个Tb(兆兆字节)。 innodb引擎表。 应尽可能快地删除该尺寸的一半以上(2/3)。 另外我们有主从配置。
达到,我考虑了以下解决方案的最快方法: 执行从属服务器上的每个表(以避免停工停产):
- 停止复制
- 选择不排删除到与原表具有相同结构的空的新表中
- 将原始表重命名为“table_old”,新表 - 更正名称
- 删除原表“table_old”
- 开始复制
问题是我们有很多FK约束。我也害怕在这个过程中打破复制。
问题: 1)在这个解决方案中,FK约束会带来什么样的潜在问题? 2)如何不破坏复制? 3)意见?替代方案?
预先感谢您。
答
,如果你可以把一会儿数据库脱机(又名无人访问该数据库除了你),你可以跟你的解决方案,但你需要删除FK之前参与和之后他们重建。您还应该检查AUTO_INCREMENT
列,这些列将通过复制操作更改编号。
的FK,如果你想在网上分贝需要,我曾与一些巨大的日志表类似的问题,任何尝试一次可能会锁定数据库或损坏表中删除所有记录。
,所以我去了一个缓慢的办法,我提出,将删除使用聚集主键的表行的批次过程,然后我安排其运行每n秒。