PowerGres 3.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 3.x は PostgreSQL 8.0 系をベースとしています。そのため、

のデータベースクラスタ(以下、データ)は、いずれもそのままでは利用する ことができません。 そこで、PowerGres 1.x および 2.x から 3.x へのデータ移行を支援する ツール (pg_shiftdata.exe) を同梱しました。

この文書は、主にデータ移行ツールの使い方を解説します。また、移行ツールを 使わずに、手動でデータを移行する方法についても解説します。

動作環境

このツールを利用するためには、あらかじめ

をそれぞれインストールしておく必要があります。また、Windows 2000 もしくは Windows XP 上で PowerGres をご利用のお客様は .NET Framework ランタイム ライブラリ日本語版を別途インストールしておく必要があります。.NET Framework ランタイムライブラリは、PowerGres に同梱されているもの、もしくは、 Microsoft 社から Windows Update によってダウンロードしてインストールする ことができます。

データ移行ツールは、移行元のデータ領域を削除せず、新しくデータ領域を作成 するため、新しいデータ領域のディスク容量が必要になります。また、移行中に ダンプファイルを作成するため、最大、移行元のディスク容量の 2 倍のディス ク容量が必要になります。

なお、データ移行ツールでは pg_dump を内部で呼ぶため、pg_dump の制約で自 動でデータ移行できない場合があります。詳しくは「PostgreSQL 8.0日本語マニ ュアル」の「22.1.4 警告」をご覧ください。

データ移行ツールの使い方

PowerGres 3.x をインストールしますと、Windows のメニューに PowerGres 3.x が作成され、「データ移行ツール」がメニューに表示されます。


メニュー

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


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

PowerGres 旧バージョンの設定

データベースフォルダの位置
PowerGres 旧バージョンのデータベースを格納しているデータベース フォルダを指定します。
ポート番号
一時的に postmaster を立ち上げる際に使用するポート番号を使用します。 他のアプリケーションで使っているポート番号は使用しないでください。 デフォルトは 5432 番です。
ユーザ名
スーパーユーザを指定します。デフォルトは postgres となります。
パスワード
スーパーユーザのパスワードを指定します。

PowerGres 3.x の設定

データベースフォルダの位置
新しく作成する PowerGres 3.x 向けのデータベースフォルダを指定します。 存在しないフォルダを指定した場合は、新しくフォルダを作成します。
ポート番号
一時的に postmaster を立ち上げる際に使用するポート番号を使用します。 他のアプリケーションで使っているポート番号は使用しないでください。 デフォルトは 5433 番です。また、PowerGre 旧バージョンのポート番号とは 別の番号を使用してください。
ユーザ名
スーパーユーザ名は、PowerGres 旧バージョンのスーパーユーザ名を引き 継ぎます。入力することはできません。
パスワード
スーパーユーザのパスワードは、PowerGres 旧バージョンのパスワードを 引き継ぎます。入力することはできません。

その他の設定

pg_hba.conf のコピー
pg_hba.conf ファイル(ネットワーク接続設定認証ファイル)のコピーを 行います。チェックを付けていない場合、pg_hba.conf は自動生成される デフォルトのものになります。
postgresql.conf のコピー
postgresql.conf ファイル(データベース基本設定ファイル)は PowerGres 旧バージョンと 3.x では、いくつか変数名が異なったりしているため、その まま使うことができません。このツールでは、PowerGres 旧バージョンの古い パラメータ名を 3.x 向けの新しい変数名に変更するようにしていますが、 いくつかの注意点・制限事項 (後述) があります。

チェックを付けていない場合、postgresql.conf は 自動生成されるデフォル トのものになります。

作業領域フォルダの位置

作業領域フォルダとは、pg_dump でデータベースをダンプしたファイルを一時 的に置くためのフォルダです。存在しないフォルダを指定した場合、エラーと なります。デフォルトの値は実行するユーザの環境変数 "TEMP" の値(通常は "\Documents and Settings\ユーザ名\Local Settings\Temp")となります。

ツールを実行する

各種設定項目を設定し、「実行」をクリックするとデータの移行が始まります。 なお、データ移行ツールを使用する際には postmaster を停止しておく必要 があります。

「実行」をクリックするとプログレスバーが表示され、進行状況を把握すること ができます。


進行状況を表すプログレスバー

万が一、データ移行をしている途中でエラーが発生した場合は、次のようなダイ アログを表示し、3.x のデータベースディレクトリを削除します。 また、「中止」ボタンをクリックした場合も同様です。


エラーダイアログ

また、「詳細を表示」ボタンをクリックすることにより、どのようなエラーが発 生したか表示されます。


エラーメッセージの表示

プログレスバーが最後まで進み、プログレスバーが閉じるとダンプが終了となり ます。PowerGres 3.x のデータベースフォルダの位置に新しくデータが作成さ れたので、

pg_ctl -D "3.x データベースフォルダ" start

もしくは、3.x のサーバーマネージャから postmaster を起動することができ ます。このデータ移行ツールでは PowerGres 旧バージョンのデータベース フォルダは削除せず残ります。

注意点・制限事項

これら注意点は、一度確認することをお勧めします。

ツールを使わずにデータ移行する場合

データ移行ツールを使わずに、データ移行する手順を説明します。この場合も

がそれぞれインストールされている必要があります。 なお、ここでは、コマンドプロンプトの使い方や環境変数PATHの設定について の説明は省略させていただきます。

PowerGres 旧バージョン上での操作

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 データベース名 > ダンプファイル

PowerGres 3.x 上での操作

あらかじめ 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 ダンプファイル

postgresql.conf の変更

いくつかの変数名が変更になっているもの、無くなったものがありますので、 設定内容の確認が必要です。

PowerGres 3.x への移行時に、変数名/変数値の変更が必要なもの:

PowerGres 1.x PowerGres 2.x PowerGres 3.x
server_min_messages log_min_messages
hostname_lookup log_hostname
show_source_port log_source_port log_line_prefix*
show_parser_stats log_parser_stats
show_planner_stats log_planner_stats
show_executor_stats log_executor_stats
show_statement_stats log_statement_stats
virtual_host listen_addresses
SortMem work_mem
VacuumMem maintenance_work_mem
log_pid log_line_prefix*
log_timestamp log_line_prefix*
syslog log_destination*
max_expr_depth max_stack_depth*
log_statement log_statement*
wal_debug 廃止
trace_notify 廃止
autocommit 廃止
geqo_random_seed 廃止

「←」は「左に同じ」を意味します。 「*」印の付いたものは、設定値の意味が変更されています。変更内容につい ての詳細は、「PostgreSQL 8.0日本語マニュアル」の「16.4. 実行時の設定」 を参照して下さい。

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

pg_hba.conf の変更

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