ここでは、Denbun POPのデータをPostgreSQL8.3からPostgreSQL9.2へ移行する手順をご説明します。
前提条件
本手順は以下を前提に説明いたします。
DenbunPOPのバージョン:V3.3P R2.1
PostgreSQL8.3の管理ユーザー:postgres
PostgreSQL8.3の起動スクリプト:「/etc/rc.d/init.d/postgresql」
PostgreSQL8.3のソース:「/usr/local/src/postgresql-8.3.5/src」
PostgreSQL8.3のインストール先:「/usr/local/pgsql」
PostgreSQL8.3のデータディレクトリ:「/var/pgsql/data」
バックアップ先:「/home/postgres/backup」
|
|
- 1.事前準備
-
スケジューラーを起動されている場合、スケジューラーを停止してください。
rootユーザーにスイッチした上で、dnpschedulerプロセスをkillします。
[停止コマンド例]
# pkill -9 dnpscheduler
Webサーバーを停止してください。
[Webサーバー(Apache)停止コマンド例]
# /etc/rc.d/init.d/httpd stop
または、
# service httpd stop
- 2.PostgreSQL8.3上のDenbunのデータをバックアップ
-
PostgreSQLの「pg_dump」コマンドでバックアップします。
[データベースバックアップコマンド例]
# su - postgres
$ /usr/local/pgsql/bin/pg_dump -b -Fc -U postgres dnpwmldb > /home/postgres/backup/dnpwmldb.backup
- 3.PostgreSQL8.3をアンインストール
-
以下のコマンドでPostgreSQLを停止させ
次に、PostgreSQLをアンインストールします。
[データベース(PostgreSQL)停止コマンド例]
# su
# service postgresql stop
[データベース(PostgreSQL)アンインストールコマンド例]
# chkconfig --del postgresql
# rm /etc/rc.d/init.d/postgresql
# cd /usr/local/src/postgresql-8.3.5/
# gmake uninstall
# rm -rf /usr/local/src/postgresql-8.3.5/
# mv /var/pgsql /var/pgsql_OLD
※「/var/pgsql_OLD」は移行が正しく行えた事を確認した後に削除してください。
- 4.PostgreSQL9.2をインストール
-
postgresql-9.2.x.tar.gzをダウンロードして
こちらの手順に沿ってPostgreSQL 9.2.xをインストールしてください。
DenbunPOPは既にインストール済みですので、ここではPostgreSQLのインストール(データベースの自動起動設定)までを行ってください。
- 5.データをリストア
-
以下のコマンドにてデータべースファイルをリストアします。
[データベース作成コマンド例]
# su – postgres
$ /usr/local/pgsql/bin/psql
> postgres=# CREATE ROLE dnpwml LOGIN PASSWORD 'dnpwml' NOINHERIT VALID UNTIL 'infinity';
> postgres=# CREATE DATABASE dnpwmldb WITH OWNER=dnpwml TEMPLATE=template0 ENCODING='UTF8' LC_COLLATE='C' LC_CTYPE='C';
> postgres=# \q
[データベースリストアコマンド例]
$ /usr/local/pgsql/bin/pg_restore -Fc -U postgres -d dnpwmldb /home/postgres/backup/dnpwmldb.backup
※以下のようなメッセージが表示されますが問題ございません
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 668; 2612 16389 PROCEDURAL LANGUAGE plpgsql postgres
pg_restore: [archiver (db)] could not execute query: ERROR: language "plpgsql" already exists
Command was: CREATE PROCEDURAL LANGUAGE plpgsql;
WARNING: errors ignored on restore: 1
- 6.Webサーバーおよびスケジューラーを再開
-
Webサーバーを開始してください。
[Webサーバー(Apache)開始コマンド例]
# /etc/rc.d/init.d/httpd start
または、
# service httpd start
※スケジューラーはcronで設定された時間に自動起動されます。
こちらをご参照ください。
- 7.完了
-
以上で移行作業は完了です。