实验的时候,我们通常需要运行多个版本的pg实例。


最近试用了下pgenv 发现这个虚拟环境并不是很好用,pg自身的多实例更好用,具体方法如下:


这里以我们编译安装好的pgsql11.5为例(其它rpm安装的pg也可以的)。我的pgsql原始安装路径在/usr/local/pgsql/ 目录下


切换到postgres账户下

su - postgres


创建相关目录

cd /usr/local/pgsql/
mkdir pg1
mkdig pg2


初始化

initdb -D usr/local/pgsql/pg1/
initdb -D usr/local/pgsql/pg2/


启动pg:

pg_ctl -D /usr/local/pgsql/pg1/ -o "-p 5433" -l /usr/local/pgsql/pg1/pg.log start
pg_ctl -D /usr/local/pgsql/pg2/ -o "-p 5434" -l /usr/local/pgsql/pg2/pg.log start


登录到PG

./bin/psql -p  5433
./bin/psql -p  5434


停止PG:

pg_ctl stop -m fast -D /usr/local/pgsql/pg1/
pg_ctl stop -m fast -D /usr/local/pgsql/pg2/


日常我们可以在服务器上编译多个不同版本的pg,使用上面的方法即可启动多个实例,只要我们的端口不冲突就行。