单机多开也叫多实例:
su postgres -c "/usr/pgsql-12/bin/pg_ctl -D 数据目录 start" #还可以stop ,reload
单机多开 postgresql ,只需要创建好不同的目录,给目录分配好权限,修改端口避免冲突,然后分别执行上面的命令启动即可。
下面我们来演示一下:
安装过程可以参考之前的文章:
[root@localhost 14]# ll 总用量 8 drwx------. 2 postgres postgres 6 11月 10 23:46 backups drwx------. 20 postgres postgres 4096 1月 25 18:01 data -rw-------. 1 postgres postgres 990 1月 25 18:01 initdb.log [root@localhost 14]# cp -rf data data1 [root@localhost 14]# chown -R postgres:postgres data1 [root@localhost 14]# ll 总用量 12 drwx------. 2 postgres postgres 6 11月 10 23:46 backups drwx------. 20 postgres postgres 4096 1月 25 18:01 data drwx------. 20 postgres postgres 4096 1月 25 18:01 data1 -rw-------. 1 postgres postgres 990 1月 25 18:01 initdb.log [root@localhost 14]# cd data1/ [root@localhost data1]# ll 总用量 68 drwx------. 5 postgres postgres 41 1月 25 18:01 base -rw-------. 1 postgres postgres 30 1月 25 18:01 current_logfiles drwx------. 2 postgres postgres 4096 1月 25 18:01 global drwx------. 2 postgres postgres 32 1月 25 18:01 log drwx------. 2 postgres postgres 6 1月 25 18:01 pg_commit_ts drwx------. 2 postgres postgres 6 1月 25 18:01 pg_dynshmem -rw-------. 1 postgres postgres 4577 1月 25 18:01 pg_hba.conf -rw-------. 1 postgres postgres 1636 1月 25 18:01 pg_ident.conf drwx------. 4 postgres postgres 68 1月 25 18:01 pg_logical drwx------. 4 postgres postgres 36 1月 25 18:01 pg_multixact drwx------. 2 postgres postgres 6 1月 25 18:01 pg_notify drwx------. 2 postgres postgres 6 1月 25 18:01 pg_replslot drwx------. 2 postgres postgres 6 1月 25 18:01 pg_serial drwx------. 2 postgres postgres 6 1月 25 18:01 pg_snapshots drwx------. 2 postgres postgres 6 1月 25 18:01 pg_stat drwx------. 2 postgres postgres 25 1月 25 18:01 pg_stat_tmp drwx------. 2 postgres postgres 18 1月 25 18:01 pg_subtrans drwx------. 2 postgres postgres 6 1月 25 18:01 pg_tblspc drwx------. 2 postgres postgres 6 1月 25 18:01 pg_twophase -rw-------. 1 postgres postgres 3 1月 25 18:01 PG_VERSION drwx------. 3 postgres postgres 60 1月 25 18:01 pg_wal drwx------. 2 postgres postgres 18 1月 25 18:01 pg_xact -rw-------. 1 postgres postgres 88 1月 25 18:01 postgresql.auto.conf -rw-------. 1 postgres postgres 28769 1月 25 18:01 postgresql.conf -rw-------. 1 postgres postgres 58 1月 25 18:01 postmaster.opts -rw-------. 1 postgres postgres 103 1月 25 18:01 postmaster.pid
这里注意要将postmaster.pid删除掉,不然启动不了,会报文件已经被锁定的错误,因为这个文件是data里面拷贝的所以是刚开始第一次启动postgresql所生成的,通过上面的命令再次启动的话就会生成同一个文件里面的值不一样而已
修改data1里的postgresql.conf文件
只修改端口号即可
port = 15432
然后执行下面的命令启动该实例
su postgres -c "/usr/pgsql-14/bin/pg_ctl -D ./data1 start"
结果:
[root@localhost 14]# netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 941/sshd tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1608/postmaster tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1161/master tcp 0 0 127.0.0.1:15432 0.0.0.0:* LISTEN 1668/postgres tcp6 0 0 :::22 :::* LISTEN 941/sshd tcp6 0 0 ::1:5432 :::* LISTEN 1608/postmaster tcp6 0 0 ::1:25 :::* LISTEN 1161/master tcp6 0 0 ::1:15432 :::* LISTEN 1668/postgres [root@localhost 14]#
两个实例已经都启动了,一个端口号是5432,第二个是15432
可以通过以下命令分别登陆:
登陆第一个实例:
su - postgres psql -p 5432
登陆第二个实例:
su - postgres psql -p 15432
两个实例互不影响