我已经使用 PostgreSQL 16 或 17 年了(大约从 7.2 或 7.3 版本开始)。无论出于什么原因,我一开始都是使用 PG 从源代码安装。由于惰性/害怕改变,直到今天我从未直接通过发行版的存储库安装过 PG。
我想将其更改为 --- 不是本机发行版的 PG 版本,而是 postgres 提供的存储库,以便我可以安装最新版本。我正在运行的服务器是 Debian 9/stretch。
我一定会仔细查看文档,但我欢迎对以下方面提出任何意见:
- 我总是遵循“简洁版本“---但我没有看到
initdb
或pg_ctl
。有没有直接替代这些的? - 就此而言,我看到了
pg_wrapper
,根据man
页面,“它确定用户配置的集群和数据库,并调用所需程序的适当版本来连接到该集群和数据库“。这让我毛骨悚然。不应该吗?[让我毛骨悚然?] 我有一个正在运行的 9.x 安装,它使用
SQL_ASCII
编码和C
语言环境。(最初按照“短版本”安装过程从源代码安装)。如何在运行 Debian 9 的全新/开箱即用的服务器上迁移到全新 PG 11 安装?这是我通常做的事情:[postgres]$ pg_dumpall > dumpall.sql
并将备份复制到新机器。- 在新机器上从源安装,包括
/usr/local/pgsql/bin/initdb -D /home/postgres/data -E SQL_ASCII --locale=C
(对于我们正在讨论的遗留应用程序,我无法改变这一点)。 - 以用户 postgres 身份运行:
[postgres]$ psql -f dumpall.sql
迁移到基于存储库的安装时会有什么差异或意外吗?
它能与 Debian 兼容吗
unattended-upgrades
?- 那么 contrib 模块呢?我们的应用程序使用
pgcrypto
;我通常做的是,运行前psql
恢复,我转到下载的源目录,cd contrib/pgcrypto
→make
→sudo make install
(可能还需要重新启动 postgres?)。然后,dumpall.sql
包含导入pgcrypto
功能和创建必要函数的所有内容。
还有什么需要注意的方面吗?
答案1
我已经使用 Debian PostgreSQL 包有几年了,没有遇到任何问题,我可以推荐这种安装方式。
以及您问题的答案:
当你安装 Debian 软件包时,它将创建一个名为的数据库模板。像往常一样,有一个“超级用户”用户 - 系统用户 postgres。
initdb
并且pg_ctl
我在 下有/usr/lib/postgres/ver.sion/bin
。也许我无法理解您的问题,但我已尝试回答您:Debian 可以管理两个或更多版本的数据库(但运行在不同的端口上)。例如,我可以在端口 5432(默认 PostgreSQL 端口)上运行 PostgreSQL 10.0 版,在端口 5433 上运行 PostgreSQL 11.0 版。如果我必须升级到新版本的 PostgreSQL,Debian 会将新版本安装到另一个端口(5433),并且有一个命令
pg_upgradecluster
可以让您自动将 PostgreSQL 从旧版本升级到新版本。运行此命令后,端口 5432(默认 PostgreSQL 端口)上将有新版本的 Po stgreSQL(在本例中为 11.0),而端口 5433 上将是旧版本(在本例中为 10.0 版)的 PostgreSQL。您可以测试它,如果一切正常,您可以删除旧版本并卸载旧版本的 PostgreSQL。我对这个过程有很好的经验,我可以推荐它。我的升级过程是这样的:pg_lscluster
将列出正在使用的集群。pg_dropcluster --stop 11.0 main
(Debian 将为新版本的 PostgreSQL 创建一个新集群,但如果我使用 pg_upgradecluster,它将为我创建一个新集群...)pg_upgradecluster 10.0 main 11.0
(它将把我的旧集群升级到新版本的 PostgreSQL,并且将更改新旧版本的端口:在调用此命令之前,旧版本将位于端口 5432 上,而新版本将位于端口 5433 上,调用此命令后,新版本将位于端口 5432 上,而端口 5433 上将是旧版本的 PostgreSQL)。
PostgreSQL 建议使用迁移过程(pg_dumpall 然后是 psql -f dump_file)(PG 版本迁移)我可以推荐它。它会很好。
我没有遇到
unattended-upgrades
任何问题。我没有使用
pgcrypto
模块,但恕我直言,您可以使用这个程序(我希望它可以在版本 11 中运行):Ubuntu下PostgreSQL 8.4中pgcrypto模块的安装