テクノロイド

コンピュータやゲーム他、色々日々思ったことをつづっていきます。

今更postgresのバックアップ・リストア方法を調査

2017-04-19 12:21:45 | ORCA関係,Debian Linux
これまではSQL形式でバックアップしたデータをリストアするのにpsql使ってても、遅くてもまあ我慢できるかなという感じだったのだが、今回psqlのリストアで4時間以上かかってしまったので今更postgresのバックアップ・リストア方法を調査した。

pg_dumpallというDBをまるまるバックアップするコマンドがあるので、これなら速いのでは?と思ってやったら結局SQL形式だったので上記のとおり遅かった。psqlの画面出力が遅い原因か?とpsql -qと出力を抑制してもダメだった。
そしてなんとpg_dumpallってSQL形式しかサポートしてないというビックリ仕様だった。

なのでググッてカスタム形式とtar形式があるというので比較してみた。
timeコマンドで時間を計ってみる。
postgres@realpc:~$ time pg_dump -Fc testdb > dbFc.dump
postgres@realpc:~$ time pg_dump -Ft testdb > dbFt.tar
メモ忘れたが、実時間でカスタム形式が5分でtar形式が2分くらいだったかな。

それをそれぞれリストアした。(DBをわざわざcreateしなくても良い)
postgres@container:~$ time pg_restore -C -d postgres < dbFc.dump
real 6m31.718s
user 0m44.595s
sys 0m11.117s
postgres@container:~$ dropdb testdb
postgres@container:~$ time pg_restore -C -d postgres < dbFt.tar
real 4m36.913s
user 0m26.373s
sys 0m11.919s

これなら速いけど、実はリストアするときにpostgres.confでsync=offを指定して再起動する必要がある。
それをしなかったら30分たっても終わらなかったので強制終了した。
なので、元に戻すのを忘れないようにしなければいけない。これうっかり忘れるんじゃないだろうか。というか、これ書くのに実際忘れてたのを思い出した。あぶねー。
リストアのオプションにあればいいのに。

最新の画像もっと見る

コメントを投稿