我们有一台 PostgreSQL 服务器,刚刚从 9.3 升级到 9.5。我们所有的机器都安装了 9.3 客户端包,因此pg_dump
不再工作,因为它不向前兼容。
显然,我们必须升级客户端软件 - 我的问题是,我们应该升级到哪个版本?我最初的想法是我们应该升级到 9.6,这是 9.* 系列中的最新版本,这样如果我们再次升级服务器,就不必再这样做了。但如果是这样,那么为什么不升级到 10 或 11 呢?像这样混合使用主要版本有什么缺点吗?10 和 11 客户端被认为是稳定的吗?
答案1
我的建议是升级客户端以保持与服务器版本兼容(例如 pg_dump v9.5.x 可与 9.5.x postgres 服务器配合使用)。您可以使用版本 10 在版本 9.5.x 上执行 pg_dump,但您必须准备好处理可能因期望每天执行此操作而出现的任何错误。
从表面上看,即使对 pg_dump 命令发生的更改是新的命令参数(如下所示),我怀疑对于使用未来版本的客户端对旧版本的 postgresql 服务器进行备份的不同排列的测试是否同样严格。
- 9.6 引入了
--strict-names argument
- 10 引入
--no-blobs
--no-publications
--no-subscriptions
--no-sync
论点
由于执行备份并不总是必须在服务器本身上本地调用,因此您可以始终为此目的使用不同的机器(远程调用备份)
根据操作系统和包管理器的不同,较新版本的 pg_dump 可能已经在服务器上了,例如 /usr/lib/postgresql/你的服务器版本/bin/,您可以随时创建到新版本的符号链接,如下所示(假设是 Debian 系统):
sudo ln -s --force /usr/lib/postgresql/9.5/bin/pg_dump /usr/bin/pg_dump