仅导出上个月修改的行(用户定义的日期)

Rey*_*ier 5 mysql mysqldump backup mysql-5.5 row-modification-time

我在问是否可以在 MySQL 中仅导出在一段时间内修改的行,例如在过去一个月中修改的行,如果可能,如何?

Rol*_*DBA 5

这取决于具有时间戳列的表。

mysqldump有一个--where选项,您可以在转储特定表时定义该选项

例子

如果您有一个名为mydb.mytab定义如下的表

CREATE TABLE mytable
(
    id INT NOT NULL AUTO_INCREMENT,
    tm TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)

您可以在该表上指定日期范围,如下所示(2013 年 6 月):

WHERE_CLAUSE="(tm >= '2013-06-01 00:00:00') AND"
WHERE_CLAUSE="${WHERE_CLAUSE} (tm < '2013-07-01 00:00:00')"
mysqldump -uroot -p mydb mytable --where="${WHERE_CLAUSE}"
Run Code Online (Sandbox Code Playgroud)

这将是最有帮助的,因为时间戳可以自动更新。

我写了一篇Aug 15, 2011关于如何使用--where不基于时间戳转储数据子集的文章:是否有可能 mysqldump 重现查询所需的数据库子集?

如果您在所需的表中没有时间戳列,最好只保留在任何给定月份生成的所有二进制日志。