postgres 9.4 找不到已编译的 pg_rewind 库

postgres 9.4 can't find compiled pg_rewind library

我 运行 在 Ubuntu 16.04.3 上安装了 Postgres 9.4。 Postgres 是使用 apt-get 安装的,我也使用 apt-get 下载了源代码和依赖项。我下载了 pg_rewind REL9_4_STABLE 分支并构建了它。当我尝试 运行 我的 pg_rewind 命令时,我得到以下信息:

    The servers diverged at WAL position 0/6148D50 on timeline 1.
Rewinding from Last common checkpoint at 0/5000098 on timeline 1
SQL command failed
CREATE OR REPLACE FUNCTION rewind_support.rewind_support_ls_dir(text, boolean) RETURNS SETOF text AS '$libdir/pg_rewind_support' LANGUAGE C STRICT;
ERROR:  could not access file "$libdir/pg_rewind_support": No such file or directory

Failure, exiting

我找到了 pg_rewind_support.so 库文件并将其放置在 pg_config --libdir 和 --pkglibdir 返回的位置,但没有成功。我什至创建了一个没有 .so 扩展名的副本。

$ls -la $(pg_config  --pkglibdir)/pg_rewind_support*
-rw-r--r-- 1 root root 18768 Jul 16 17:59 /usr/lib/postgresql/9.4/lib/pg_rewind_support
-rw-r--r-- 1 root root 18768 Jul 16 17:50 /usr/lib/postgresql/9.4/lib/pg_rewind_support.so
$ls -la $(pg_config  --libdir)/pg_rewind_support*
-rw-r--r-- 1 root root 18768 Jul 16 17:59 /usr/lib/x86_64-linux-gnu/pg_rewind_support
-rw-r--r-- 1 root root 18768 Jul 16 17:44 /usr/lib/x86_64-linux-gnu/pg_rewind_support.so

有什么想法可以让我安装的 apt-get Postgres 识别 pg_rewind 库吗?我不想最终 运行 在生产环境中使用内部打包和构建的完整 postgres。

在与 OP 合作的过程中,构建 pg_rewind 的步骤是:

  • 下载合适的 PostgreSQL 9.4.18 tarball,解压。
  • 下载pg_rewind,进入贡献/
  • 配置 PostgreSQL 以匹配 Debian/Ubuntu 使用的目录布局:

    ./configure --libdir=/usr/lib/postgresql/9.4/lib --bindir=/usr/lib/postgresql/9.4/bin

  • 在 PostgreSQL 上做一个 "make"。

  • 在 pg_rewind 上做一个 "make" 和一个 "sudo make install"。

pg_rewind 必须同时安装在源系统(以便 .so 在那里可用)和目标系统(因此 pg_rewind 二进制文件在那里可用)。