如何在Ubuntu上运行和切换PostgreSQL的不同版本?

x6yk4ghg  于 2023-05-16  发布在  PostgreSQL
关注(0)|答案(6)|浏览(352)

我正在做两个不同的项目,需要两个不同版本的postgres(12和14),这两个版本都是在安装过程中从源代码构建的。
如何配置我的系统以在同一台计算机上安装两个版本,以及如何在它们之间切换?

dsf9zpds

dsf9zpds1#

配置和初始化文件时,请确保每次将位置设置为不同的目录。假设我想安装pgsql 13和15。对于下面的代码块,我将pgsql 13配置为安装在名为pgsql-13的目录中。

git clone https://github.com/postgres/postgres.git
cd postgres
git checkout REL_13_STABLE
./configure --prefix=/usr/local/pgsql-13
make
sudo mkdir /usr/local/pgsql-13
sudo chown {your username} /usr/local/pgsql-13
make install
export PATH=/usr/local/pgsql-13/bin/:$PATH
export PGDATA=/usr/local/pgsql-13/bin/data

对于pgsql 15,我想将其安装在一个名为pgsql-15的不同目录中。

git checkout REL_15_STABLE
./configure --prefix=/usr/local/pgsql-15
make
sudo mkdir /usr/local/pgsql-15
sudo chown {your username} /usr/local/pgsql-15
make install
export PATH=/usr/local/pgsql-15/bin/:$PATH
export PGDATA=/usr/local/pgsql-15/bin/data

下一步是初始化数据库并更改其中一个数据库的端口号(仅当您希望能够同时运行两个服务器时)。

cd /usr/local/pgsql-13
bin/initdb {your database name}
vim {your database name}/postgresql.conf

运行vim后,导航到第64行附近,您可以看到端口集#port = 5432。删除hashtag #并将端口号更改为其他值,例如5431。保存并退出编辑器以启动服务器并使用以下命令创建数据库:

bin/pg_ctl -D {your database name} -l logfile start
bin/createdb --port=5431 {your database name}
bin/psql --port=5431 {your database name}

对于其他版本也是如此(如果您没有手动更改端口号,则默认端口号为5432):

cd /usr/local/pgsql-15
bin/initdb {your database name}
bin/pg_ctl -D {your database name} -l logfile start
bin/createdb --port=5432 {your database name}
bin/psql --port=5432 {your database name}

如果您没有同时运行两个服务器,则不必更改任何一个版本的端口号,但请确保在使用bin/pg_ctl -D {your database name} -l logfile stop运行另一个服务器之前停止另一个服务器。

y1aodyip

y1aodyip2#

看看这个网站-> https://simondosda.github.io/posts/2021-05-24-docker-postgres.html
您可以使用Docker在计算机上运行不同版本的PostgreSQL。Docker允许你在独立的容器中运行程序,这些容器不会相互影响。您可以使用两种方法来使用Docker运行不同版本的PostgreSQL:
1.使用docker run命令并给予你想要的版本号。例如,PostgreSQL 12的postgres:12。您还可以为容器给予名称、密码和数据库名称。要更改版本,您必须停止并删除旧容器,并使用不同的版本号启动新容器。
1.使用docker-compose命令并编写一个包含两个版本信息的文件。例如,您可以在文件中写入postgres:12和postgres:14,并为每个端口给予不同的端口。还可以为每个容器给予名称、密码和数据库名称。要启动这两个版本,您只需要一个命令。要连接到任一版本,您必须使用正确的端口号。

uqdfh47h

uqdfh47h3#

下面的步骤可以让你在不同的postgres版本之间切换
1.为数据库群集创建新目录

sudo mkdir /usr/local/pgsql12/data
sudo mkdir /usr/local/pgsql14/data

1.初始化数据库群集

/usr/local/pgsql12/bin/initdb -D /usr/local/pgsql12/data

/usr/local/pgsql14/bin/initdb -D /usr/local/pgsql14/data

1.启动PostgreSQL服务器

/usr/local/pgsql12/bin/pg_ctl -D /usr/local/pgsql12/data -l logfile12 start
/usr/local/pgsql14/bin/pg_ctl -D /usr/local/pgsql14/data -l logfile14 start

1.在PostgreSQL版本之间切换
要在PostgreSQL版本之间切换,您需要停止当前运行的服务器,然后启动另一个版本的服务器。

/usr/local/pgsql12/bin/pg_ctl -D /usr/local/pgsql12/data stop

    /usr/local/pgsql14/bin/pg_ctl -D /usr/local/pgsql14/data stop
yk9xbfzb

yk9xbfzb4#

您可以为每个数据库版本使用不同的端口。
可以通过编辑port文件中的port字段来编辑postgresql.conf文件中的Postgres端口。
或者,在启动数据库服务器时,可以使用以下命令指定端口:

pg_ctl -D /path/to/postgres/data -l logfile -p <your_port_number> start

此命令将在指定的端口上启动数据库服务器。

hjqgdpho

hjqgdpho5#

PostgreSQL版本管理器pgenv
卸载当前的PostgreSQL安装,然后按照自述说明安装pgenv
安装后:使用命令pgenv available获取所有可用的postgres版本以进行安装。使用pgenv build <version>安装多个版本的PostgreSQL。
然后,您可以使用pgenv use <version>pgenv switch <version>命令来使用和切换多个PostgreSQL版本。

col17t5w

col17t5w6#

首先,将不同的版本保存在完全独立的目录中。
如果你想分别运行它们,
切换到终端中相应版本的目录,并运行以下命令:
-> bin/pg_ctl -D -l日志文件启动
要阻止它,就跑
-> bin/pg_ctl -D -l日志文件停止
现在,如果您想同时运行这两个版本,请更改服务器运行的端口。
为此,打开postgresql.conf文件,该文件位于您的目录中,并将port字段更改为您想要的任何内容,只需确保两个版本中的两个端口都不同。
您可以使用上面的命令从两者各自的目录中启动服务器。

相关问题