PostgreSQL8 へ移行
[更新日:
2005年06月11日
]
VineSeed では最近 PostgreSQL-8.0.1 にバージョンアップされました。
PostgreSQL-7.x 系とはデータベースの互換性がありません。
移植というほど大袈裟ではないけど、
一応手順だけ書き残して置きます。
0. 既存のデータベースに戻す?
(私の勘違いかもしれないのですが) VineSeed では
# apt-get dist-upgrade
すると postgresql-7.x から 8.x に上書きされてしまう気がします。
この時点で postgresql は起動出来なくなるので、
元に戻さないといけません。
幸い VineSeed には postgresql7 が置いてありますし、
Vine-3.1 の postgresql-7.x に戻す手もあります。
たとえば古い postgresql-7.x を download してきて、
# rpm -Uvh --oldpackage postgresql-7.x
と戻すことで DB を起動できるようにします。
DB が起動してない状態でのバックアップ方法を私は知りません。
1. 既存のデータベースを削除
まず現在のデータベースを保存し、
念のため ~/data もフォルダごとバックアップをとります。
その後、既存のデータベースとの互換性が無いということなので消します。
postges ユーザでのプロンプトは % で書きます。
$ su -l postgres
% /usr/bin/pg_dump -h ホスト名 -U ユーザ名 DB名 > ~/backups/データベース名
% cp -a ~/data ~/data7
% rm -rf ~/data/*
2. PostgreSQL を upgrade する
postgresql-8.x をインストールします。
# apt-get update
# apt-get install postgresql-*
更新されたことを確認しておきます。
$ rpm -q postgresql
postgresql-8.0.1-0vl1
3. データベース作成
/usr/bin/initdb を実行しても出来そうだけど、
Vine の場合 /etc/rc.d/init.d/postgresql を実行すれば良いらしい。
$ su -
# /etc/rc.d/init.d/postgresql start
データベースを初期化中: [ OK ]
Starting postgresql service: [ OK ]
一応確認しておきます。
$ su -l postgres
% ls ~/data
PG_VERSION pg_clog/ pg_subtrans/ postgresql.conf
base/ pg_hba.conf pg_tblspc/ postmaster.opts
global/ pg_ident.conf pg_xlog/ postmaster.pid
% echo $PGDATA
/var/lib/pgsql/data
% echo $LANG
ja_JP.eucJP
% echo $PGLIB
(空)
% /usr/bin/psql template1
PostgreSQL の会話型ターミナル、psql 8.0.1 へようこそ
... snip
template1=# \l
データベース一覧
名前 | 所有者 | エンコーディング
-----------+----------+------------------
template0 | postgres | EUC_JP
template1 | postgres | EUC_JP
(2 行)
template1=# \q
4. 新しいユーザを作成する
% /usr/bin/createuser ユーザ名
新しいユーザにデータベース作成権限を与えますか? (y/n) n
新しいユーザにユーザを作成する権限を与えますか? (y/n) n
CREATE USER
%
5. データベースを復旧する
% /usr/bin/createdb -O ユーザ名 -E utf-8 データベース名
CREATE DATABASE
% /usr/bin/psql データベース名 < ~/backups/データベース名
SET
...
REVOKE
GRANT
% /usr/bin/psql template1
template1=# \l
データベース一覧
名前 | 所有者 | エンコーディング
-----------+----------+------------------
DB名 | ユーザ名 | UNICODE
template0 | postgres | EUC_JP
template1 | postgres | EUC_JP
(3 行)
ここまでで、ローカルからは接続できるはず。
6. 設定ファイルを修正する
外部から接続するにはネットワークの設定を修正する必要があります。
PostgreSQL-7 から若干変更があったようです。
/var/lib/pgsql/data/postgresql.conf を修正します。
- listen_addresses = 'localhost'
+ listen_addresses = '*'
/var/lib/pgsql/data/pg_hba.conf も修正します。
+ host all all 192.168.1.0/24 password
修正後 PostgreSQL をリスタート。
$ su
# /etc/rc.d/init.d/postgresql restart
7. パスワードを設定する
外部からの接続を password に設定したので、
ユーザのパスワードを設定します。
% /usr/bin/psql データベース名
bbs03=# ALTER USER ユーザ名 WITH PASSWORD '********';
ALTER USER
bbs03=# \q
|