地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

mysqlpumpを使ってバックアップを取ってみる

mysqlの後継ツールとしてmysqlpumpというものがあるらしいので使ってみた。mysqldumpと違って処理がシリアルな部分を並列化で高速化をしてくれたりと嬉しい機能が色々とあるらしい

mysqlpump

dev.mysql.com

やってみる

やってみるとわかるがほぼほぼmysqldumpと同じだった。--helpとかでオプションが見れるがちょいちょい違うオプション名があるのでバックアップスクリプトをそのままコマンド名だけ変えて運用みたいなのはできなそうだった。ダンプの進捗状況がレポートされたりは確かに便利だろうなと感じた(テストデータなさすぎてほぼ何も出なかったけどproductionとかなら進んでるのが分かってよさそう)

# データバックアップ
bash-4.2# mysqlpump -ptest1234 test --add-drop-table > bk.sql

# リストア
bash-4.2# mysql -ptest1234 <bk.sql

ちなみに当然だがリストアはシリアル

並列化して整合性を取る仕組み

FLUSH TABLES WITH READ LOCKをしてSTART TRANSACTION WITH CONSISTENT SNAPSHOTしてUNLOCK TABLESというが流れを各スレッドで整合性を取っているらしい。mysqplpupmについて調べていたら出てきたがおそらくmysqldumpとかでも同じ手法になっているはず(バックアップの整合性ってどうやって保っているのだろうが腑に落ちたのでとても良かった)