=======
PowerGres 5.x は PostgreSQL 8.2 系をベースとしています。そのため、
のデータベースクラスタ(以下、データ)は、いずれもそのままでは利用する ことができません。 そこで、PowerGres 1.x, 2.x, 3.x から 5.x へのデータ移行を支援する ツール (pg_shiftdata.exe) を同梱しました。
この文書は、主にデータ移行ツールの使い方を解説します。また、移行ツールを 使わずに、手動でデータを移行する方法についても解説します。
このツールを利用するためには、あらかじめ
をそれぞれインストールしておく必要があります。また、Windows 2000 もしくは Windows XP 上で PowerGres をご利用のお客様は .NET Framework ランタイム ライブラリ日本語版を別途インストールしておく必要があります。.NET Framework ランタイムライブラリは、PowerGres に同梱されているもの、もしくは、 Microsoft 社から Windows Update によってダウンロードしてインストールする ことができます。
データ移行ツールは、移行元のデータ領域を削除せず、新しくデータ領域を作成 するため、新しいデータ領域のディスク容量が必要になります。また、移行中に ダンプファイルを作成するため、最大、移行元のディスク容量の 2 倍のディス ク容量が必要になります。
PowerGres 5.x をインストールしますと、Windows のメニューに「PowerGres 5」が作成され、「データ移行ツール」がメニューに表示されます。
メニュー
「データ移行ツール」をクリックしますと、データ移行ツールが起動され、以 下のウィンドウが表示されます。
移行ツールのメインウィンドウ
チェックを付けていない場合、postgresql.conf は 自動生成されるデフォル トのものになります。
作業領域フォルダとは、pg_dump でデータベースをダンプしたファイルを一時 的に置くためのフォルダです。存在しないフォルダを指定した場合、エラーと なります。デフォルトの値は実行するユーザの環境変数 "TEMP" の値(通常は "\Documents and Settings\ユーザ名\Local Settings\Temp")となります。
各種設定項目を設定し、「実行」をクリックするとデータの移行が始まります。 なお、データ移行ツールを使用する際には postmaster を停止しておく必要 があります。
「実行」をクリックするとプログレスバーが表示され、進行状況を把握すること ができます。
進行状況を表すプログレスバー
万が一、データ移行をしている途中でエラーが発生した場合は、次のようなダイ アログを表示し、5.x のデータベースディレクトリを削除します。 また、「中止」ボタンをクリックした場合も同様です。
エラーダイアログ
また、「詳細を表示」ボタンをクリックすることにより、どのようなエラーが発 生したか表示されます。
エラーメッセージの表示
プログレスバーが最後まで進み、プログレスバーが閉じるとダンプが終了となり ます。PowerGres 5.x のデータベースフォルダの位置に新しくデータが作成さ れたので、
pg_ctl -D "5.x データベースフォルダ" start
もしくは、5.x の PowerGres Manager から postmaster を起動することができ ます。このデータ移行ツールでは PowerGres 旧バージョンのデータベース フォルダは削除せず残ります。
host all all ::1/128 trust
これらの項目は、一度ご確認されることをお勧めします。
データ移行ツールを使わずに、データ移行する手順を説明します。この場合も
がそれぞれインストールされている必要があります。 なお、ここでは、コマンドプロンプトの使い方や環境変数PATHの設定について の説明は省略させていただきます。
PowerGres 旧バージョン上にあるデータをダンプします。ダンプするデータは、 データベースユーザなどのグローバルデータとテーブルに格納されているデータ があります。ダンプする前にあらかじめ、PowerGres 旧バージョンの postmaster を起動しておく必要があります。
ラージオブジェクトを格納しているテーブルが存在しない場合は、pg_dumpall コマンドをご利用していただけることによって、全データを一括してダンプする ことができます。DOS コマンドを起動し、次のコマンドを入力します。
pg_dumpall -h localhost -U postgres -p ポート番号 > ダンプファイル
ラージオブジェクトを含むテーブルが存在する場合、pg_dumpall コマンドでは、 ラージオブジェクトをダンプすることができませんので、pg_dump コマンドを 併用して、グローバルデータと各データベースをそれぞれダンプします。 グローバルデータをダンプするには、以下のようにコマンドを入力します。
pg_dumpall -h localhost -U postgres -p ポート番号 -g > ダンプファイル
次に、template0 と template1 以外のデータベースをダンプします。次のコマ ンドを各データベースに対して実行します。
pg_dump -h localhost -U postgres -p ポート番号 -F c -b データベース名 > ダンプファイル
あらかじめ initdb を実行し、データベースフォルダを作成します。そして、 postmaster を立ち上げて、ダンプしたファイルをリストアしていきます。
ダンプ同様、リストア時も、ラージオブジェクトを含むテーブルが存在するか どうかで手順が異なります。
ラージオブジェクトを含むテーブルが存在しない場合は、pg_dumpall でダンプ したファイルを psql コマンドを使ってリストアします。
psql -h localhost -U postgres -p ポート番号 -f ダンプファイル template1
ラージオブジェクトを含むテーブルが存在する場合は、まずグローバルデータ をリストアします。以下のコマンドを実行します。
psql -h localhost -U postgres -p ポート番号 -f ダンプファイル template1
次に、各データベースを pg_restore コマンドでリストアしていきます。
pg_restore -h localhost -U postgres -p ポート番号 -C -d template1 ダンプファイル
いくつかの変数名が変更になっているもの、無くなったものがありますので、 設定内容の確認が必要です。
PowerGres 5.x への移行時に、変数名/変数値の変更が必要なもの:
PowerGres 1.x | PowerGres 2.x | PowerGres 3.x | PowerGres 5.x |
australian_timezones | ← | ← | timezone_abbreviations* |
autocommit | 廃止 | ← | ← |
debug_assertions | 廃止 | ← | ← |
debug_deadlocks | 廃止 | ← | ← |
geqo_random_seed | 廃止 | ← | ← |
hostname_lookup | log_hostname | ← | ← |
log_pid | ← | log_line_prefix* | ← |
log_statement | ← | log_statement* | ← |
log_timestamp | ← | log_line_prefix* | ← |
max_expr_depth | ← | max_stack_depth* | ← |
server_min_messages | log_min_messages | ← | ← |
show_btree_build_stats | 廃止 | ← | ← |
show_executor_stats | log_executor_stats | ← | ← |
show_parser_stats | log_parser_stats | ← | ← |
show_planner_stats | log_planner_stats | ← | ← |
show_source_port | log_source_port | log_line_prefix* | ← |
show_statement_stats | log_statement_stats | ← | ← |
sort_mem | ← | work_mem | ← |
syslog | ← | log_destination* | ← |
tcpip_socket | ← | listen_addresses* | ← |
trace_lock_oidmin | 廃止 | ← | ← |
trace_lock_table | 廃止 | ← | ← |
trace_locks | 廃止 | ← | ← |
trace_lwlocks | 廃止 | ← | ← |
trace_notify | 廃止 | ← | ← |
trace_userlocks | 廃止 | ← | ← |
vacuum_mem | ← | maintenance_work_mem | ← |
virtual host | ← | listen_addresses | ← |
wal_debug | 廃止 | ← | ← |
preload_libraries | ← | shared_preload_libraries | |
rendezvous_name | ← | bonjour_name | |
bgwriter_maxpages | bgwriter_all_maxpages* bgwriter_lru_maxpages* |
||
bgwriter_percent | bgwriter_all_percent* bgwriter_lru_percent* |
「←」は「左に同じ」を意味します。 「*」印の付いたものは、設定値の意味が変更されています。変更内容につい ての詳細は、「PostgreSQL 8.2 日本語マニュアル」の「第 17 章 サーバの構成」 をご参照ください。
古い変数をそのまま利用されますと、postmaster が正常に起動されません。 initdb で自動生成された postgresql.conf をエディタ(メモ帳等)で編集する 際に、上記変数を置き換えてください。
5.x の initdb で自動生成された pg_hba.conf に、今まで利用していた pg_hba.conf の内容をエディタで追加してください。