mysqlの後継ツールとしてmysqlpumpというものがあるらしいので使ってみた。mysqldumpと違って処理がシリアルな部分を並列化で高速化をしてくれたりと嬉しい機能が色々とあるらしい
mysqlpump
やってみる
やってみるとわかるがほぼほぼ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とかでも同じ手法になっているはず(バックアップの整合性ってどうやって保っているのだろうが腑に落ちたのでとても良かった)