PowerGres 6.x へのデータ移行の説明

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

目次

はじめに

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


メニュー

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


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

PowerGres 旧バージョンの設定

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

PowerGres 6.x の設定

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

その他の設定

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

チェックを付けていない場合、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 旧バージョンのデータベース フォルダは削除せず残ります。

注意点・制限事項

これらの項目は、一度ご確認されることをお勧めします。

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

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

がそれぞれインストールされている必要があります。

以下に説明するコマンドは PowerGres 6.x のものを使います。 以下のように環境変数PATH に PowerGres 6.x の実行ファイルのあるディレクトリ (例えば "C:\Program Files\PowerGres6\bin") を設定した後に実行するものとします。

set PATH=%PATH%;C:\Program Files\PowerGres6\bin

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 6.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 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 をエディタ(メモ帳等)で編集する際に、 上記変数を置き換えてください。

pg_hba.conf の変更

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