Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 我可以在同一台机器上运行Postgres 8.4和Postgres 9吗?_Postgresql - Fatal编程技术网

Postgresql 我可以在同一台机器上运行Postgres 8.4和Postgres 9吗?

Postgresql 我可以在同一台机器上运行Postgres 8.4和Postgres 9吗?,postgresql,Postgresql,是否可以同时运行Postgres 8.4和9(两次安装) 谢谢是的,您只需将数据目录放在不同的位置。是的,您可以。您需要在不同的端口上运行它们,并使用不同的数据目录 端口和数据目录都可以在postgresql.conf中设置 我相信还有其他几种指定数据目录的方法,包括使用PGDATA环境变量。简短回答:是 长答覆: 你没有指定你的操作系统,所以很难说怎么做。例如,在Debian/Ubuntu中,您只需从软件包(和)安装第二个版本,一切都可以开箱即用(多亏了)。在其他系统上,您可能需要使用“低级”

是否可以同时运行Postgres 8.4和9(两次安装)


谢谢

是的,您只需将数据目录放在不同的位置。

是的,您可以。您需要在不同的端口上运行它们,并使用不同的数据目录

端口和数据目录都可以在postgresql.conf中设置

我相信还有其他几种指定数据目录的方法,包括使用PGDATA环境变量。

简短回答:是

长答覆:


你没有指定你的操作系统,所以很难说怎么做。例如,在Debian/Ubuntu中,您只需从软件包(和)安装第二个版本,一切都可以开箱即用(多亏了)。在其他系统上,您可能需要使用“低级”命令(如和)手动执行此操作。确保第二次安装(数据库群集)使用不同的端口(例如5433)而不是相同的数据目录。

是,前提是满足以下三个先决条件:

  • PostgreSQL正在侦听唯一的IP/端口(签出后,您可能会将PostgreSQL的两个副本隐藏在单个IP/端口后面,并通过减少活动连接的数量来减少内存占用)
  • 您有足够的SYSV共享内存可用(这通常是限制因素)
  • 您使用不同的
    PGDATA
    目录

  • 我不推荐使用足够的
    pgbouncer

    在Windows上,您无需执行任何操作,因为安装程序会自动创建唯一的数据目录,检测现有安装并自动调整端口


    例如,您的第一次安装将在5432上进行侦听,第二次安装将在5433上进行侦听,因为安装程序会为您进行配置。

    您总是可以,问题是同时安装两个版本有多困难,这取决于您的操作系统。例如,在RedHat Linux派生系统上,这是很难做到的。PostgreSQL RPM软件包在任何时候都只能安装一个版本。有时候,唯一合理的方法是从源代码构建您自己的PostgreSQL,用于您想要安装的第二个版本,如果您以前从未这样做过,这将是一次有趣的冒险

    在DebianLinux上,同时使用两个版本是非常容易的。我相信它在Windows上也很简单,但这可能取决于您使用的安装程序


    一旦安装了两个不同版本的数据库,您才需要担心其他人都在谈论的事情:让每个数据库在自己的端口上运行,并拥有自己的安装目录。与同时安装两个版本相比,这些通常是微不足道的。

    SYSV共享内存并不是一个真正的限制因素,您只需要确保将相关的内核参数(主要是SHMMAX)更新到比其微小的默认值更合理的值。绝对!尽管根据我的经验,胆小的系统管理员在几个TLA(特别是“shm*”、“ipc*”和“sysv*”)上都会变得神经过敏一个小的代价来支付惊人。有没有办法做到这一点,并使用相同的数据目录?