Mysql

僅導出上個月修改的行(使用者定義的日期)

  • September 11, 2019

我在問是否可以在 MySQL 中僅導出一段時間內修改的行,例如在過去一個月中,如果可能,如何?

這將取決於具有時間戳列的表。

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)
);

您可以按如下方式在該表上指定日期範圍(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}"

這將是最有幫助的,因為時間戳可以自動更新。

我寫了一篇Aug 15, 2011關於如何使用--where轉儲不基於時間戳的數據子集的文章:Is it possible to mysqldump a subset of a database required to replicate a query?

如果您在所需的表中沒有時間戳列,最好只保留在任何給定月份生成的所有二進制日誌。

引用自:https://dba.stackexchange.com/questions/46383