newbie14 Asked: 2012-06-23 09:17:57 +0800 CST2012-06-23 09:17:57 +0800 CST 2012-06-23 09:17:57 +0800 CST 备份和修剪数据的想法 772 我们的主表 ,tblLink在其他一些表中也将其主键作为外部键,其中一个表将tblMainData随着时间的推移将成为数百万行。 我们只想保留 3 个月的数据。 其余的我们想清除并保留以生成历史报告。在这种情况下最好的机制是什么? 我们是否应该运行一个 cron 作业来继续删除超过 3 个月的数据?如果是这样,我们如何将其存储在.sql文件中? mysql innodb 1 个回答 Voted Best Answer Abdul Manaf 2012-06-23T23:20:41+08:002012-06-23T23:20:41+08:00 正如您foreign keys在表中所拥有的那样,您不能直接进行分区。因为分区不支持 MySQL 中的外键。 您可能会进行分区,但随后您将不得不为此创建解决方案。您必须通过在表上使用(INSERT/UPDATE/DELETE)触发器来确保您的完整性。 即仅当父表中存在相应记录时才允许插入子表。 您必须使用触发器来维护所有这些完整性(插入/更新/删除)。 然后您可以按季度在表上创建分区,然后删除分区。 为了创建 .sql 文件,您可以使用--where子句mysqldump将在 .sql 中创建备份。sql文件格式。 您还可以为旧数据创建 csv,以供将来参考。
正如您
foreign keys
在表中所拥有的那样,您不能直接进行分区。因为分区不支持 MySQL 中的外键。您可能会进行分区,但随后您将不得不为此创建解决方案。您必须通过在表上使用(INSERT/UPDATE/DELETE)触发器来确保您的完整性。
即仅当父表中存在相应记录时才允许插入子表。 您必须使用触发器来维护所有这些完整性(插入/更新/删除)。
然后您可以按季度在表上创建分区,然后删除分区。
为了创建 .sql 文件,您可以使用
--where
子句mysqldump
将在 .sql 中创建备份。sql
文件格式。您还可以为旧数据创建 csv,以供将来参考。