postgresql 运行不同版本的Postgres

kokeuurv  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(5)|浏览(252)

我打算使用不同版本的PostgreSQL,一个用于为应用程序创建数据库,另一个用于设置开发环境。我该怎么做?
当我运行像pg_config这样的PostgreSQL命令时,它会返回一个已安装版本的版本。如何确保不发生冲突?

p4rjhz4m

p4rjhz4m1#

要在系统上管理多个版本的PostgreSQL而不发生冲突,您可以使用不同的方法,例如使用Docker容器,使用包管理器或手动安装不同的版本。Docker允许您在隔离的容器中运行PostgreSQL,从而可以轻松管理多个版本而不会发生冲突。您可以根据需要拉取并运行不同的PostgreSQL版本。

epggiuax

epggiuax2#

如果您使用PostgreSQL站点上的二进制包安装PostgreSQL,那么在一台机器上拥有不同PostgreSQL版本的集群是没有问题的。
如果你调用像pg_config这样的PostgreSQL可执行文件,你将从PATH上的第一个版本获得可执行文件。要从特定的PostgreSQL版本中显式选择可执行文件,请使用绝对路径。这将取决于您的操作系统。以下是三个例子:

/usr/pgsql-14/bin/pg_config              (Redhat-based Linux)
/usr/lib/postgresql/14/nin/pg_config     (Debian-based Linux)
C:\Programs\PostgreSQL\14\bin\pg_config  (Windows)
lsmd5eda

lsmd5eda3#

这个问题询问是否可以使用两个PostgreSQL安装,一个用于开发,另一个用于生产使用并确保兼容性。
一般来说,为一个与你实际使用的版本不同的版本开发听起来是一个坏主意。但在这个答案的上下文中,我不会质疑你的意图,并会假设你有充分的理由想要你想要的东西。
我不确定你是想在同一台机器上还是在多台机器上托管不同的PostgreSQL版本。
如果你想在同一台机器上托管它们,那么为了设置它,看看这个很好的问题和答案:Is it possible to have two versions of PostgreSQL Server on same Fedora 37 Server?
或者你可以使用Docker作为ndc85430建议在评论部分设置多个PostgreSQL示例。
下一个问题是兼容性。
对于你的开发环境来说,有一个连接到你开发的版本和prod版本是有意义的,所以有一个阶段安装Postgres和prod版本是有意义的,并确保任何正在启动的alter在两个版本上都执行,如果它在任何一个版本上失败,那么它就会回滚。
此外,您还需要使用其他数据库重复测试,因为有时候不兼容性在使用时就表现出来了,而在执行alter时却没有任何迹象。

falq053o

falq053o4#

我只是使用Docker在不同的端口上运行PostgreSQL镜像。效果很好。Docker postgres有点烂,因为我仍然需要一些psql的“原生”客户端之类的。
如果你已经完全安装了PostgreSQL“原生”(而不是docker),这可能会有点困难,但关键是你监听的端口。我不确定你是如何让普通的Postgres二进制文件使用唯一的配置(端口和存储),但我相信这是可能的。
你确定你需要一个第二个postgres服务器吗?您是否可以使用一个用于测试的唯一数据库和一个用于开发的不同数据库来获得相同的效果?

bxjv4tth

bxjv4tth5#

你可以通过以下步骤在你的机器上运行不同的postgresql版本:
1.验证您已安装并希望运行的postgresql版本可以通过以下命令检查和验证

/usr/psql-(version)/bin/pg_config

2.设置特定安装的环境变量

e.g export PATH=/usr/psql-(version)/bin=$PATH

3.更改不同版本的postgresql安装的端口号

eg.As we know the default postgresql instance runs on port 5432 so as to avoid conflicts You should configure one of the installations to listen to a different port by adding the different port number into the postgresql.conf file of that particular installation

4.在初始化任何数据库集群时使用单独的数据目录为每个版本使用不同的数据目录
5.最后,您可以通过指定服务名称来启动特定版本的postgresql

e.g sudo systemctl start postgresql-(version)

相关问题