实验的时候,我们通常需要运行多个版本的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,使用上面的方法即可启动多个实例,只要我们的端口不冲突就行。