SQL
PostgreSQL バックアップとリストア
2009年02月23日
テーブル単位でDBを移転したくなったので、PostgreSQLのバックアップとリストアに挑戦してみました。
以前にやろうとして挫折してしまいました。
コマンドそのものは簡単です。
バックアップ(テーブル単位)
pg_dump -t テーブル名 DB名 > 出力ファイルパス
バックアップ(DB単位)
pg_dump DB名 > 出力ファイルパス
リストア
psql DB名 < 入力ファイルパス
こう書けば至極簡単なのですが、DBの指定、ファイルのパスの指定方法がわかりません。サーバーについてはほとんど知らないし、どこからコマンドを打っているのかいまいちわからずにやってるので、あてずっぼ色々やってみました。
スクリプトからUNIXへ降りて実行できるのかもしれませんが、telnetから実行しています。
DB名はWebサーバーからDBサーバーへの接続コマンドを参考にしてみました。
ファイルはおそらくWebサーバールートに出力されるはずです。
DBとpg_dumpのバージョンが違うと怒られました。
これは【-i】オプションで無視できます。
pg_dump -i -t テーブル名 DB名 > 出力ファイルパス
ファイルが出力されました!
ここまでくればリストアはすんなりいきます。
めでたくテーブル移動に成功です。
これをcronなどで動かせば自動バックアップができるようになります。
以前にやろうとして挫折してしまいました。
コマンドそのものは簡単です。
バックアップ(テーブル単位)
pg_dump -t テーブル名 DB名 > 出力ファイルパス
バックアップ(DB単位)
pg_dump DB名 > 出力ファイルパス
リストア
psql DB名 < 入力ファイルパス
こう書けば至極簡単なのですが、DBの指定、ファイルのパスの指定方法がわかりません。サーバーについてはほとんど知らないし、どこからコマンドを打っているのかいまいちわからずにやってるので、あてずっぼ色々やってみました。
スクリプトからUNIXへ降りて実行できるのかもしれませんが、telnetから実行しています。
DB名はWebサーバーからDBサーバーへの接続コマンドを参考にしてみました。
ファイルはおそらくWebサーバールートに出力されるはずです。
DBとpg_dumpのバージョンが違うと怒られました。
これは【-i】オプションで無視できます。
pg_dump -i -t テーブル名 DB名 > 出力ファイルパス
ファイルが出力されました!
ここまでくればリストアはすんなりいきます。
めでたくテーブル移動に成功です。
これをcronなどで動かせば自動バックアップができるようになります。
コメント