今回は、ひとつのホスト上で異なるバージョンの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 で起動します。
ここでは、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
動作確認
[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=#