postgres 9.4找不到编译的pg_rewind库

时间:2018-07-16 20:30:15

标签: postgresql ubuntu-16.04 postgresql-9.4

我正在运行在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。

1 个答案:

答案 0 :(得分:0)

在通过OP进行此操作时,构建pg_rewind的步骤为:

  • 下载适当的PostgreSQL 9.4.18 tarball,解压缩。
  • 下载pg_rewind,移至contrib /
  • 配置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二进制文件都在此处)。