めざせ趣味グラマー!!

SEやPGになるのをあきらめ趣味グラマーになるため日々修行する日記

データベースのバックアップ

今日はpostgresqlのデータをバックアップしました。
備忘録として残しておきたいと思います。

作業としては

データをバックアップ
↓
データベースのテーブルの定義変更
↓
データのリストア

という3工程を行いました。

データのバックアップ

まず特定のテーブルからのバックアップですが

$ pg_dump --format=plain test_db > test_db.sql

の様にするとプレインテキスト形式で保存してくれます。
今回はそこまで多くのクエリやテーブルが存在していなかったのでプレインテキスト形式で保存しましたが、データの数が多くなってくると容量が多くなるので注意してください。
(この場合はバイナリ形式など圧縮して出力するオプションを使うのが適切だと思います)

テーブルの定義変更(必要な場合)

先ほど保存したファイルにはクエリのデータだけでなく、テーブルの定義情報なども書かれています。
データをリストアする前にこの情報を書き換えておくことでデータのリストアと同時に変更することができます。

この次にデータのリストアをするのですが、一度データベースを削除した後、新しいデータベースを作成して(テーブルは作成しなくてよい)おきましょう。
またデータのリストアをした際に、元々入っているデータが重複するので必ずこの作業をしておきましょう。

データベースの削除と作成方法

この辺はおさらいでさらっと書いておきます。

・データベースの削除

$ dropdb dbname

・データベースの作成

$ createdb dbname

 

データのリストア

$ psql -f test_db.sql dbname

これで新しく作成したデータベースに前と同じデータが挿入されました。 今後は自動的にバックアップをとってくれるスクリプトを書いていこうと思っています。