PowerGres 6.x は PostgreSQL 8.3 系をベースとしています。そのため、
のデータベースクラスタ(以下、データ)は、 いずれもそのままでは利用することができません。 そこで、PowerGres 1.x, 2.x, 3.x, 5.x から 6.x へのデータ移行を支援するツール (pg_shiftdata.exe) を同梱しました。
この文書は、主にデータ移行ツールの使い方を解説します。 また、移行ツールを使わずに、手動でデータを移行する方法についても解説します。
このツールを利用するためには、あらかじめ
をそれぞれインストールしておく必要があります。また、Windows XP 上で PowerGres をご利用のお客様は .NET Framework ランタイム ライブラリ日本語版を別途インストールしておく必要があります。.NET Framework ランタイムライブラリは、PowerGres に同梱されているもの、もしくは、 Microsoft 社から Windows Update によってダウンロードして インストールすることができます。
データ移行ツールは、移行元のデータ領域を削除せず、新しくデータ領域を作成するため、 新しいデータ領域のディスク容量が必要になります。また、移行中にダンプファイルを作成するため、 最大、移行元のディスク容量の 2 倍のディスク容量が必要になります。
PowerGres 6.x をインストールしますと、Windows のメニューに「PowerGres 6」が作成され、「データ移行ツール」がメニューに表示されます。
メニュー
「データ移行ツール」をクリックしますと、データ移行ツールが起動され、 以下のウィンドウが表示されます。
移行ツールのメインウィンドウ
チェックを付けていない場合、postgresql.conf は 自動生成されるデフォルトのものになります。
作業領域フォルダとは、 pg_dump でデータベースをダンプしたファイルを一時的に置くためのフォルダです。 存在しないフォルダを指定した場合、エラーとなります。 デフォルトの値は実行するユーザの環境変数 "TEMP" の値(通常は "\Documents and Settings\ユーザ名\Local Settings\Temp")となります。
各種設定項目を設定し、「実行」をクリックするとデータの移行が始まります。 なお、データ移行ツールを使用する際には postmaster を停止しておく必要があります。
「実行」をクリックするとプログレスバーが表示され、 進行状況を把握することができます。
進行状況を表すプログレスバー
万が一、データ移行をしている途中でエラーが発生した場合は、 次のようなダイアログを表示し、 6.x のデータベースディレクトリを削除します。 また、「中止」ボタンをクリックした場合も同様です。
エラーダイアログ
また、「詳細を表示」ボタンをクリックすることにより、 どのようなエラーが発生したか表示されます。
エラーメッセージの表示
プログレスバーが最後まで進み、プログレスバーが閉じるとダンプが終了となります。 PowerGres 6.x のデータベースフォルダの位置に新しくデータが作成されたので、
pg_ctl -D "6.x データベースフォルダ" start
もしくは、6.x の PowerGres Manager から postmaster を起動することができ ます。このデータ移行ツールでは PowerGres 旧バージョンのデータベース フォルダは削除せず残ります。
host all all ::1/128 trust
これらの項目は、一度ご確認されることをお勧めします。
データ移行ツールを使わずに、データ移行する手順を説明します。この場合も
がそれぞれインストールされている必要があります。
以下に説明するコマンドは PowerGres 6.x のものを使います。 以下のように環境変数PATH に PowerGres 6.x の実行ファイルのあるディレクトリ (例えば "C:\Program Files\PowerGres6\bin") を設定した後に実行するものとします。
set PATH=%PATH%;C:\Program Files\PowerGres6\bin
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 6.x への移行時に、変数名/変数値の変更が必要なもの:
PowerGres 1.x | PowerGres 2.x | PowerGres 3.x | PowerGres 5.x | PowerGres 6.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_lru_maxpages |
||
bgwriter_percent | bgwriter_all_percent* bgwriter_lru_percent* |
廃止 bgwriter_lru_percent |
||
redirect_stderr | ← | logging_collector | ||
stats_command_string | ← | ← | ← | track_activities |
「←」は「左に同じ」を意味します。 「*」印の付いたものは、設定値の意味が変更されています。 変更内容についての詳細は、「PostgreSQL 8.3 日本語マニュアル」の 「第 18 章 サーバの構成」をご参照ください。
古い変数をそのまま利用されますと、postmaster が正常に起動されません。 initdb で自動生成された postgresql.conf をエディタ(メモ帳等)で編集する際に、 上記変数を置き換えてください。
6.x の initdb で自動生成された pg_hba.conf に、今まで利用していた pg_hba.conf の内容をエディタで追加してください。