2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

« ∇MS-Officeトラブル解決(サーバ上のOfficeファイルが表示できない) | トップページ | §PostgreSQL(テーブルが見つかりません、リレーションがありませんエラーについて) »

2011年4月29日 (金)

§PostgreSQL(データベースの再構築(移植)手順について)

久しぶりのPostgreSQLネタです。PostgreSQLで作成したデータベースを、pg_dumpで出力したバックアップファイルを使って別のPCに同じデータベースを再構築(移植)しようとしました。pg_dumpのリファレンスを読む限りCreate DatabaseなどすべてのDDL文が生成されると考えていたのですがそうでもなさそうです。生成されたバックアップファイルはどうも不十分なようです。それを踏まえて、再構築の手順を書いてみたいと思います。

話の前提として、AサーバのデータベースをBサーバに新規に構築するものとします。
OSはAサーバがXP、BサーバがWindows7です。Aが8.4.3、Bは9.0.3です。
(1)まずAサーバでpg_dump -U ユーザ名 -f バックアップファイル名 -C -n スキーマ名 データベース名を実行します。バックアップファイルはbk.sqlとします。
(2)最初に書きましたが(1)の命令では以下の部分が出力されません。その部分を実行するDDLを手で作成します。仮にcre_db.sqlとします。pgAdminⅢなどでDDL文がわかりますのでそれをコピペすれば良いでしょう。ただし、create database文はそのままコピーしてもエラーになるので単にcreate database データベース名 WITH TEMPLATE template0;で作成します。
  さらに、AサーバでProgram files\Postgresql\8.4\data配下にtablespaceを作成していた場合、Windows7(Bサーバ)のProgram files配下には作成できないなどの問題が発生する可能性があるので別のフォルダに作成するように記述することをおすすめします。(Windows7の権限強化の関係です)
 ・Create role user文 ・・・pgAdminⅢの「ログインロール」
 ・create database文・・・・create database データベース名 WITH TEMPLATE template0;
 ・create tablespace文・・・pgAdminⅢの「テーブル空間」
(3)Bサーバではまず、PostgreSQLをインストールし、環境変数Pathにインストール先のbinのパスを通しておきます。
(4)上記(2)のtablespace作成先フォルダが存在しない場合は作成しておきます。フォルダが存在しないままCreate tablespaceを実行するとエラーとなるからです。
(5)psql -U postgres -f cre_db.sqlでユーザ、データベース、テーブルスペースを構築します。
(6)psql -U postgres -d データベース名 -f bk.sqlで残りのテーブルやデータを構築します。データベース名を指定しないと、デフォルトのデータベースに作成されてしまうので注意が必要です。

いろいろ試行錯誤の末この手順に辿り着きました。皆様の参考になれば幸いです。

« ∇MS-Officeトラブル解決(サーバ上のOfficeファイルが表示できない) | トップページ | §PostgreSQL(テーブルが見つかりません、リレーションがありませんエラーについて) »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ∇MS-Officeトラブル解決(サーバ上のOfficeファイルが表示できない) | トップページ | §PostgreSQL(テーブルが見つかりません、リレーションがありませんエラーについて) »