PostgreSQL で DB をコピーする[PostgreSQL]
(2014-11-13 13:20:20) by shinoda


PostgreSQL の話。

テスト用に DB のコピーを作る時、今までは「新しい DB を createdb で作成」「元の DB を pg_dump で丸々ダンプ(pg_dumpall に非ず)」「psql でダンプファイルから新しい DB にリストア」「ユーザ権限関係とか調整」とか色々作業してたんだけど、一発で DB のコピーできたんだね。

新しい DB を作る時に、

$ createdb -T old_db new_db

って感じでテンプレートデータベースとして元の DB を指定すれば、この DB の内容丸コピー(データも含めて)で新しい DB が作成されるんやね〜
知らんかった。
まあ、そんなに何度もやることじゃないので、pg_dump 実行してほげほげで困らなかった(もう、この方法を知ってしまったので今後は pg_dump ほげほげ面倒くさいけれど(^^;)んだけど、今後はこの方法で一発やね。

ただ、この時、old_db がその瞬間使われていたら、

createdb: database creation failed: ERROR:  source database "old_db" is being accessed by other users

みたいなエラーが出ちゃう。
この時は、old_db へのセッションプロセスを全部 kill しちゃおう。

$ ps -auxww|grep post

とかすれば、

postgres  7186  0.0  0.0  6468 1600 pts/2    S+   14:20   0:00 psql old_db

こんなプロセスが引っかかるので、

$ kill -9 7186

とかして殺していく。
これで、createdb が問題なく出来るぞ。むふん。

コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8