2014年2月13日木曜日

ひとつのホストで異なるバージョンのPostgreSQLを起動する

今回は、ひとつのホスト上で異なるバージョンのPostgreSQLを起動してみたいと思います。
起動するPostgreSQLは過去にねたとしてあげたコミュニティ版の9.2と9.3とし、OSはCentOS6.5(x86_64)とします。

コミュニティ版のPostgreSQL9.xは、データベースクラスタが最初から同じ位置ではないので、利用するポートがかぶらないようにすれば実現は簡単です。


起動スクリプトを使う場合


PostgreSQL9.3は5432ポートで起動させるので(特別なことをせずに) /etc/rc.d/init.d/postgresql-9.3 start で起動します。

PostgreSQL9.2は"/etc/rc.d/init.d/postgresql-9.2"内のPGPORTの記述をPostgreSQL9.3が利用する5432ポートと異なるものに変更します。
ここでは、5433ポートに変更します。
PGPORT=5433
後は、/etc/rc.d/init.d/postgresql-9.2 start で起動します。


pg_ctlを使う場合


面倒でもフルパスで指定するのが間違いがないでしょう。

[postgres@pgsql ~]$ /usr/pgsql-9.3/bin/pg_ctl start -D /var/lib/pgsql/9.3/data
[postgres@pgsql ~]$ /usr/pgsql-9.2/bin/pg_ctl start -o "-p 5433" -D /var/lib/pgsql/9.2/data


動作確認


下記のように9.2と9.3のPostgreSQLが起動しているのが確認できます。
[postgres@pgsql ~]$ ps -fC postgres
UID        PID  PPID  C STIME TTY          TIME CMD
postgres  1364     1  0 18:19 pts/0    00:00:00 /usr/pgsql-9.3/bin/postgres -D /var/lib/pgsql/9.3/data
postgres  1365  1364  0 18:19 ?        00:00:00 postgres: logger process
postgres  1367  1364  0 18:19 ?        00:00:00 postgres: checkpointer process
postgres  1368  1364  0 18:19 ?        00:00:00 postgres: writer process
postgres  1369  1364  0 18:19 ?        00:00:00 postgres: wal writer process
postgres  1370  1364  0 18:19 ?        00:00:00 postgres: autovacuum launcher process
postgres  1371  1364  0 18:19 ?        00:00:00 postgres: stats collector process
postgres  1406     1  0 18:21 pts/0    00:00:00 /usr/pgsql-9.2/bin/postgres -D /var/lib/pgsql/9.2/data -p 5433
postgres  1407  1406  0 18:21 ?        00:00:00 postgres: logger process
postgres  1409  1406  0 18:21 ?        00:00:00 postgres: checkpointer process
postgres  1410  1406  0 18:21 ?        00:00:00 postgres: writer process
postgres  1411  1406  0 18:21 ?        00:00:00 postgres: wal writer process
postgres  1412  1406  0 18:21 ?        00:00:00 postgres: autovacuum launcher process
postgres  1413  1406  0 18:21 ?        00:00:00 postgres: stats collector process
[postgres@pgsql ~]$

psqlコマンドはより新しいバージョンのものになりますが、ポートを指定して下位のバージョンに接続する事ができます。
[postgres@pgsql ~]$ psql -V
psql (PostgreSQL) 9.3.2
[postgres@pgsql ~]$
[postgres@pgsql ~]$ psql -p 5433
psql (9.3.2, server 9.2.6)
Type "help" for help.
postgres=#

0 件のコメント:

コメントを投稿