首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Slony Error,Replication : PGRES_FATAL_ERROR load‘$libdir/slony1_Replication.2.2.0

Slony Error,Replication : PGRES_FATAL_ERROR load‘$libdir/slony1_Replication.2.2.0
EN

Stack Overflow用户
提问于 2014-10-16 07:12:47
回答 2查看 1.6K关注 0票数 0

到目前为止,我已经成功地在一台计算机中完成了Postrong的Slony复制(主服务器和从服务器都驻留在同一台计算机中,即本地主机)。

我在Ubuntu12.04、11和Windows中完成了这些工作。我遵循了这个链接中的示例步骤。http://www.linuxjournal.com/article/7834?page=0,0

我甚至能够在两个不同的windows计算机主ip之间执行这个步骤: 192.168.0.3从ip 192.168.0.8)

但是,当我在运行Slave:Suse(192.168.0.9)) slonik C:\Slony\mtscript.txt时尝试在Windows和Suse之间进行Slony复制(母版: Windows(192.168.0.3))时,我得到了以下错误

C:\Slony\mtscript.txt:8: PGRES_FATAL_ERROR加载'$libdir/slony1_funcs.2.2.0';-错误:无法访问文件“$libdir/slony1_PGRES_FATAL_ERROR.2.2.0”:没有这样的文件或目录

C:\Slony\mtscript.txt:8: Error: Slony-I C函数的扩展不能加载在数据库'dbname=repdb_slave host=192.168.0.9 port=5432 user=postgres password=root'中。

当我搜索这个错误时,我发现了很多,我只是通过破坏命令./pg_config发现,

(1)在windows中,slony1_funcs.2.2.0.dll在LIBDIR = C:/PROGRA~2/POSTGR~1/9.3/lib (即C:\Program (x86)\PostgreSQL\9.3\lib)中。

(2)在Suse中,slony1_funcs.2.2.0.so在中PKGLIBDIR= /opt/PostgreSQL/9.3/lib/postgresql

编辑:

我的脚本文件: mtscript.txt

代码语言:javascript
复制
cluster name = repdb_cluster_suse;
node 1 admin conninfo = 'dbname=repdb host=192.168.0.3 port=5432 user=postgres password=root';
node 2 admin conninfo = 'dbname=repdb_slave host=192.168.0.9 port=5432 user=postgres password=root';
init cluster (id = 1, comment = 'Node 1');
create set (id = 1, origin = 1,comment = 'contact table');
set add table (set id = 1, origin = 1, id = 1,full qualified name = 'public.contact',comment = 'Table contact');
set add sequence (set id = 1, origin = 1, id = 2,full qualified name = 'public.contact_seq',comment = 'Sequence contact_seq');
store node (id = 2, comment = 'Node 2',event node=1);
store path (server = 1, client = 2,conninfo = 'dbname=repdb host=192.168.0.3 port=5432 user=postgres password=root');
store path (server = 2, client = 1,  conninfo = 'dbname=repdb_slave host=192.168.0.9 port=5432 user=postgres password=root');
store listen (origin = 1, provider = 1, receiver = 2);
store listen (origin = 2, provider = 2, receiver = 1);

我安装了相同版本的Postgres(9.3.5.1版)和slony(2.2.0-1)。

Windows Postgres安装目录为C:\Program (x86)\PostgreSQL\9.3

suse Postgres安装目录是/opt/PostgreSQL/9.3/bin

那么如何解决这个错误呢?如何在windows和linux之间执行Slony复制(Suse)?

任何帮助都会受到感谢。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-18 05:00:23

多亏了理查德·赫克斯顿( Richard Huxton ),我发现了我的问题,据他说,加载了‘slony1_ for s.2.2.0’;给我一个Windows和linux的错误,然后我意识到我的Slony版本是不同的,在windows中,版本是2.2.0,而在linux中,版本是2.2.2 ( windows和linux在Postgres 9.3的Stackbuilder中得到了不同的Slony版本)

因此,我从Linux卸载Slony 2.2.2,并手动为Suse linux构建并安装Slony 2.2.0。

现在Windows复制工作正常。

票数 1
EN

Stack Overflow用户

发布于 2014-10-17 08:06:35

好的--您的安装脚本没有明显的问题,我们知道它适用于Windows<=>Windows和Linux<=>Linux。

在你的窗口机器上,你能尝试这样的东西吗:

代码语言:javascript
复制
C:> psql -h 192.168.0.9 -U postgres -d repdb_slave
postgres# load 'foo';
postgres# load 'slony1_funcs.2.2.0';

第一个应该给出一个错误,第二个应该工作。如果没有,请再次检查pg_config设置、文件位置和权限。

同时-检查PostgreSQL服务器日志。如果没有看到在那里记录的第一个错误,请确保用数据库和用户名记录错误,然后再试一次。然后你可以再试一次,看看它在做我们认为的事情。

如果第二个"load“确实正常工作,那么它可能是slony本身的一个bug (与行尾或类似的部分有关)。他们有在http://slony.info上提到的邮件列表,我会把这个问题放在那里,给出这个问题的链接。

肯定有很多人做过跨平台的复制,所以我觉得在Slony中会有这样一个明显的错误是很奇怪的。但我看不出我们错过了什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26398281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档