到目前为止,我已经成功地在单台计算机上完成了 Postrong 的 Slony 复制(主从服务器都驻留在同一台计算机上,即本地主机)。
我在 Ubuntu 12.04、Suse Enterprise server 11 和 Windows 中做过。我遵循了此链接中的示例步骤。http://www.linuxjournal.com/article/7834?page=0,0这个_
我什至能够在两个不同的 Windows 计算机主 IP 之间执行此步骤:192.168.0.3 从属 IP 192.168.0.8)
但是当我在运行slonik C:\Slony\mtscript.txt时尝试 Windows 和 Suse 之间的 Slony 复制( Master: Windows(192.168.0.3)和Slave:Suse(192.168.0.9) ) ,我得到了这个错误
C:\Slony\mtscript.txt:8: PGRES_FATAL_ERROR 加载 '$libdir/slony1_funcs.2.2.0'; - 错误:无法访问文件“$libdir/slony1_funcs.2.2.0”:没有这样的文件或目录
C:\Slony\mtscript.txt:8: 错误:无法在数据库'dbname=repdb_slave host=192.168.0.9 port=5432 user=postgres password=root'中加载 Slony-I C 函数的扩展
当我用谷歌搜索这个错误时,我发现了很多,我只是通过破坏命令 ./pg_config 我才知道,
(1)windows slony1_funcs.2.2.0.dll在LIBDIR = C:/PROGRA~2/POSTGR~1/9.3/lib (即C:\Program Files (x86)\PostgreSQL\9.3\lib)
(2)并且在 Suse中slony1_funcs.2.2.0.so在PKGLIBDIR = /opt/PostgreSQL/9.3/lib/postgresql
编辑 :
我的脚本文件:mtscript.txt
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)。(都从这里下载32 位版本)
Windows Postgres 安装目录是 C:\Program Files (x86)\PostgreSQL\9.3
suse Postgres 安装目录是 /opt/PostgreSQL/9.3/bin
那么如何解决这个错误呢?如何在 windows 和 linux(suse) 之间执行 Slony 复制?
任何帮助将不胜感激。
提前致谢