読者です 読者をやめる 読者になる 読者になる

MyController

WEB業界素人の僕がまた見返しそうなことのメモです。

【MySQL】mysqldumpでバックアップとって今年のデータだけ綺麗に入れる方法

MySQL

とにかく膨大なデータがあるので、一度全部のデータを消して今年のデータだけを入れるってことをしたい。

ポイントサイトとか運用していて年ごとにポイントを昨年分リセットして

今年の分は1からインクリメントさせた方が見栄えはいい。

なので、全バックアップを取っておいてやってみる。

手順は簡単

 

手順

1.Mysql dumpで全データをbk

mysqldump --single-transaction --default-character-set=binary -u root -p DB名 | gzip > 20170123export.gz

 

2.2017年のデータだけbk
カラム名と内容を指定してこんな感じでSQLを書いてみた。
下記は必要なテーブル分繰り返し。

mysqldump --single-transaction --default-character-set=binary -u root -p DB名 テーブル名 --where "insert_date >= '2017-01-01 00:00:00'" | gzip > 2017テーブル名.gz


3.Mysqlにログインして、テーブルごとに全データ削除。
10万件とかあってもこれは速攻で消えるから気持ちいいような怖いような。
これもまた必要分繰り返し。

TRUNCATE TABLE テーブル名;


4.2017年データ入れるだけでID番号もリセットされてるので綺麗に入ってくれる。
圧縮ファイルなので下記で入ってくれる。

zcat 2017テーブル名.gz | mysql -u root -p DB名