PowerGres 2.x は PostgreSQL 7.4 系をベースとしています。そのため、 PostgreSQL 7.3 系をベースとしている PowerGres 1.x のデータベースクラス タ(以下、データ)をそのまま利用することができません。そこで、PowerGres 1.x から 2.x へのデータ移行を支援するツール (pg_shiftdata.exe) を同梱 しました。
この文書は、主にデータ移行ツールの使い方を解説します。また、移行ツールを 使わずに、手動でデータを移行する方法についても解説します。
このツールを利用するためには、あらかじめ PowerGres 1.x と PowerGres 2.x をインストールしておく必要があります。また、Windows 2000 もしくは Windows XP 上で PowerGres をご利用のお客様は .NET Framework ランタイム ライブラリ日本語版を別途インストールしておく必要があります。.NET Framework ランタイムライブラリは、PowerGres に同梱されているもの、もしくは、 Microsoft 社から Windows Update によってダウンロードしてインストールする ことができます。
データ移行ツールは、移行元のデータ領域を削除せず、新しくデータ領域を作成 するため、新しいデータ領域のディスク容量が必要になります。また、移行中に ダンプファイルを作成するため、最大、移行元のディスク容量の 2 倍のディス ク容量が必要になります。
なお、データ移行ツールでは pg_dump を内部で呼ぶため、pg_dump の制約で自 動でデータ移行できない場合があります。詳しくは「PostgreSQL 7.4日本語マニ ュアル」の「22.1.4 警告」をご覧ください。
PowerGres 2.x をインストールしますと、Windows のメニューに PowerGres 2.x が作成され、「データ移行ツール」がメニューに表示されます。
pg_hba.conf ファイル(ネットワーク接続設定認証ファイル)のコピーを行いま す。チェックを付けていない場合、pg_hba.conf は自動生成されるデフォルト のものになります。
postgresql.conf ファイル(データベース基本設定ファイル)は PowerGres 1.x と 2.x では、いくつか変数名が異なったりしているため、そのまま使うこと ができません。このツールでは、PowerGres 1.x の古いパラメータ名を 2.x 向けの新しい変数名に変更するようにしました。
注意点として 2 点挙げられます。
max_fsm_relation=1000 max_fsm_pages=20000に設定します。
チェックを付けていない場合、postgresql.conf は 自動生成されるデフォル トのものになります。
作業領域フォルダとは、pg_dump でデータベースをダンプしたファイルを一時 的に置くためのフォルダです。存在しないフォルダを指定した場合、エラーと なります。デフォルトの値は実行するユーザの環境変数 "TEMP" の値(通常は "\Documents and Settings\ユーザ名\Local Settings\Temp")となります。
各種設定項目を設定し、「実行」をクリックするとデータの移行が始まります。 なお、データ移行ツールを使用する際には postmaster を停止しておく必要があります。
「実行」をクリックするとプログレスバーが表示され、進行状況を把握すること ができます。
万が一、データ移行をしている途中でエラーが発生した場合は、次のようなダイ アログを表示し、2.x のデータベースディレクトリを 削除します。また、「中止」ボタンをクリックした場合も同様です。
また、「詳細を表示」ボタンをクリックすることにより、どのようなエラーが発 生したか表示されます。
プログレスバーが最後まで進み、プログレスバーが閉じるとダンプが終了となり ます。PowerGres 2.x のデータベースフォルダの位置に新しくデータが作成さ れたので、
pg_ctl -D "2.x データベースフォルダ" startもしくは、2.x のサーバーマネージャから postmaster を起動することができ ます。このデータ移行ツールでは PowerGres1.x のデータベースフォルダは削 除せず残ります。
データ移行ツールを使わずに、データ移行する手順を説明します。この場合も PowerGres 1.x と PowerGres 2.x がインストールされている必要があります。 なお、ここでは、コマンドプロンプトの使い方や環境変数PATHの設定について の説明は省略させていただきます。
pg_dumpall -h localhost -U postgres -p ポート番号 > ダンプファイル
グローバルデータをダンプする場合は、以下のようにコマンドを入力します。
pg_dumpall -h localhost -U postgres -p ポート番号 -g > ダンプファイル次に、template0 と template1 以外のデータベースをダンプします。次のコマ ンドを各データベースに対して実行します。
pg_dump -h localhost -U postgres -p ポート番号 -F c -b データベース名 > ダンプファイル
psql -h localhost -U postgres -p ポート番号 -f ダンプファイル template1
psql -h localhost -U postgres -p ポート番号 -f ダンプファイル template1これで、ユーザなどのグローバルデータのリストアが完了します。次に、各デー タベースをリストアしていきます。
pg_restore -h localhost -U postgres -p ポート番号 -C -d template1 ダンプファイル
PowerGres 1.x | PowerGres 2.x |
server_min_messages | log_min_messages |
hostname_lookup | log_hostname |
show_source_port | log_source_port |
show_parser_stats | log_parser_stats |
show_planner_stats | log_planner_stats |
show_executor_stats | log_executor_stats |
show_statement_stats | log_statement_stats |
wal_debug |
trace_notify |
autocommit |
geqo_random_seed |
古い変数をそのまま利用されますと、postmaster が正常に起動されません。 initdb で自動生成された postgresql.conf をエディタ(メモ帳等)で編集する 際に、上記変数を置き換えてください。
別の手段として、1.x の postgresql.conf をコピーし、PowerGres 2.x に同 梱している PowerGres サーバーマネージャの「データベースの基本設定」で postgresql.conf を編集しますと、サーバーマネージャが古い変数名の値を自 動的に新しい変数名の値へと置き換えます。