MySQLで、過去1か月などの一定期間に変更された行のみをエクスポートできるかどうかを尋ねていますが、可能であれば、どうすればよいですか?
これは、タイムスタンプ列を持つテーブルに依存します。
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
を使用してデータのサブセットをダンプする方法についての投稿を書きました: クエリの再現に必要なデータベースのサブセットをmysqldumpすることは可能ですか? ?
目的のテーブルにタイムスタンプ列がない場合は、任意の月に生成されたすべてのバイナリログを保持することをお勧めします。