PowerGres 1.x から 2.x へのデータ移行の説明


SRA OSS, Inc. 日本支社
http://powergres.sraoss.co.jp
E-mail:PowerGres-info@sraoss.co.jp
Copyright (C) 2003-2010 SRA OSS, Inc. Japan
All rights reserved.

目次

はじめに

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 が作成され、「データ移行ツール」がメニューに表示されます。


メニュー

「データ移行ツール」をクリックしますと、データ移行ツールが起動され、以 下のウィンドウが表示されます。


移行ツールのメインウィンドウ

PowerGres 1.x の設定

データベースフォルダの位置

移行したいデータベースを格納しているデータベースフォルダを指定します。

ポート番号

一時的に postmaster を立ち上げる際に使用するポート番号を使用します。他の アプリケーションで使っているポート番号は使用しないでください。デフォルト は 5432 番です。

ユーザ名

スーパーユーザを指定します。デフォルトは postgres となります。

パスワード

スーパーユーザのパスワードを指定します。

PowerGres 2.x の設定

データベースフォルダの位置

新しく作成する PowerGres 2.x 向けのデータベースフォルダを指定します。 存在しないフォルダを指定した場合は、新しくフォルダを作成します。

ポート番号

一時的に postmaster を立ち上げる際に使用するポート番号を使用します。他の アプリケーションで使っているポート番号は使用しないでください。デフォルト は 5433 番です。また、1.x のポート番号とは別の番号を使用してください。

ユーザ名

スーパーユーザ名は、PowerGres 1.x のスーパーユーザ名を引き継ぎます。入力 することはできません。

パスワード

スーパーユーザのパスワードは、PowerGres 1.x のパスワードを引き継ぎます。 入力することはできません。

その他の設定

pg_hba.conf のコピー

pg_hba.conf ファイル(ネットワーク接続設定認証ファイル)のコピーを行いま す。チェックを付けていない場合、pg_hba.conf は自動生成されるデフォルト のものになります。

postgresql.conf のコピー

postgresql.conf ファイル(データベース基本設定ファイル)は PowerGres 1.x と 2.x では、いくつか変数名が異なったりしているため、そのまま使うこと ができません。このツールでは、PowerGres 1.x の古いパラメータ名を 2.x 向けの新しい変数名に変更するようにしました。

注意点として 2 点挙げられます。

上記 2 点を踏まえたうえで、一度確認することをお勧めします。

チェックを付けていない場合、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の設定について の説明は省略させていただきます。

PowerGres 1.x 上での操作

PowerGres 1.x 上にあるデータをダンプします。ダンプするデータは、データベ ースユーザなどのグローバルデータとテーブルに格納されているデータがありま す。ダンプする前にあらかじめ、PowerGres 1.x の postmaster を起動しておく 必要があります。

ラージオブジェクトを含むテーブルが存在しない場合

ラージオブジェクトを格納しているテーブルが存在しない場合は、pg_dumpall コマンドをご利用していただけることによって、全データを一括してダンプする ことができます。DOS コマンドを起動し、次のコマンドを入力します。
pg_dumpall -h localhost -U postgres -p ポート番号 > ダンプファイル

ラージオブジェクトを含むテーブルが存在する場合

pg_dumpall コマンドは、ラージオブジェクトをダンプすることができませんの で、ラージオブジェクトを含むデータベースを全てダンプする場合は、グローバ ルデータのダンプし、各データベースをラージオブジェクト付きでダンプします。

グローバルデータをダンプする場合は、以下のようにコマンドを入力します。

pg_dumpall -h localhost -U postgres -p ポート番号 -g > ダンプファイル
次に、template0 と template1 以外のデータベースをダンプします。次のコマ ンドを各データベースに対して実行します。
pg_dump -h localhost -U postgres -p ポート番号 -F c -b データベース名 > ダンプファイル

PowerGres 2.x 上での操作

あらかじめ、initdb を実行し、データベースフォルダを作成します。そして、 postmaster を立ち上げて、ダンプしたファイルをリストアしていきます。リ ストアするには、psql と pg_restore コマンドを利用します。

ラージオブジェクトを含むテーブルが存在しない場合

ラージオブジェクトが無い場合は、pg_dumpall でダンプしたファイルを psql コマンドを使ってリストアします。
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 ダンプファイル

postgresql.conf の変更

いくつかの変数名が変更になっているもの、無くなったものがあります。それ らの変数は次のものになります。

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
2.x から変数名が変更されたもの

wal_debug
trace_notify
autocommit
geqo_random_seed
PowerGres 2.x から廃止になった変数

古い変数をそのまま利用されますと、postmaster が正常に起動されません。 initdb で自動生成された postgresql.conf をエディタ(メモ帳等)で編集する 際に、上記変数を置き換えてください。

別の手段として、1.x の postgresql.conf をコピーし、PowerGres 2.x に同 梱している PowerGres サーバーマネージャの「データベースの基本設定」で postgresql.conf を編集しますと、サーバーマネージャが古い変数名の値を自 動的に新しい変数名の値へと置き換えます。

pg_hba.conf の変更

2.x の initdb で自動生成された pg_hba.conf に、今まで利用していた 1.x の pg_hba.conf の内容をエディタで追加してください。

制限事項