postgresql - postgres 9.4 找不到已编译的 pg_rewind 库
问题描述
我正在运行安装在 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,进入 contrib/
配置 PostgreSQL 以匹配 Debian/Ubuntu 使用的目录布局:
./configure --libdir=/usr/lib/postgresql/9.4/lib --bindir=/usr/lib/postgresql/9.4/bin
在 PostgreSQL 上做一个“制作”。
- 在 pg_rewind 上执行“make”和“sudo make install”。
pg_rewind
必须安装在源系统(这样 .so 在那里可用)和目标系统(这样pg_rewind
二进制文件在那里可用)上。
推荐阅读
- tsql - SSRS逗号分隔字符串到多个超链接
- angular - 角度锚滚动问题
- oracle - Oracle XE 安装中止,没有错误说明
- java - FXMLLoader ClassNotFoundException
- sql-server - 具有用户定义类型参数的 Powershell 存储过程
- xml - Reverse-engineer a Word DOCX generated by XML back to XML
- php - 无法在子主题中向自定义 wp 用户角色添加功能
- c# - AsNoTracking method throwing error in linq statement
- sql - 在一列中结合一个案例和一个 Coalese
- python - 使用扩散方程的矩阵求逆计算沿棒的温度分布