HOME | ドキュメント |  ブログ  |  BBS  |  瓦版  | 将棋プロジェクト |  物置小屋   

データベース
 道標
象歩
象歩ブログ
ドキュメント
自転車整備ノート
C/C++
Linux 備忘録
IMAPサーバ構築
データベース
PostgreSQL8 へ移~
小技集
雑記
パソコン整備ノート
不健康日記
不健康日記(2)
不健康日記(3)
Python パイソン
セキュリティ
Vine ヴァイン
Zope2 (ゾープ 2.x 系)
象歩BBS
Web瓦版
将棋プロジェクト
物置小屋
 リンク
日本 PostgreSQL ユーザ会
pgsql-jp 保存書庫
SRA PostgreSQL
PostgreSQL 8.0.1 日本語マニュアル
PostgreSQL 7.4.6 日本語マニュアル
JPUG広報担当blog

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