2014-10-16 8 views
0

한 컴퓨터에서 Postrong에 대한 슬론 복제를 성공적으로 마쳤습니다. 동일한 컴퓨터에 마스터와 슬레이브 둘 다 로컬 호스트가 있습니다.

저는 우분투 12.04, 수세 엔터프라이즈 서버 11 및 Windows에서했습니다. 이 링크의 예제 단계를 따랐습니다. http://www.linuxjournal.com/article/7834?page=0,0

this 내가 두 개의 서로 다른 Windows 컴퓨터 마스터 IP 사이의 단계를 수행 심지어 수 있었다 : 192.168.0.3 슬레이브 IP를 192.168.0.8)

을하지만 때 윈도우와 수세 사이에 Slony 복제 시도를 (마스터 : 윈도우 (192.168.0.3)슬레이브 : 수세 내가 slonik C 실행할 때 (192.168.0.9)) : \ Slony \가을 mtscript.txt, 내가 가진이 오류

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 : 오류 : Slony-I C에 대한 확장 기능은 데이터베이스에로드 할 수 없습니다 'DBNAME = repdb_slave 호스트 = 192.168.0.9 포트 = 5432 사용자 = 포스트 그레스 암호 = 루트'

난이 오류 난의 힘에 대한 검색 좀 많이, 난 그냥 명령을 파멸로 알고 온 발견 ./pg_config 제가

발견

(1) 창에 slony1_funcs.2.2.0.dllLIBDIR = C에서, 그/PROGRA ~ 2/POSTG R ~ 1/9.3/lib에 (즉, C : \ Program Files (86) \ PostgreSQL의 \ 9.3 \ lib 디렉토리)

(2)와 수세 가에 slony1_funcs.2.2.0.so 해서 pkglibdir =/선택/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); 
. \ 프로그램 파일 (:

나는 포스트 그레스 (버전 9.3.5.1) 및 slony (2.2.0-1)

윈도우 포스트 그레스 설치 디렉토리는 C (모두에서 here 32 비트 버전 다운로드)의 동일한 버전을 설치 한 86) \ PostgreSQL의 \ 9.3

수세 포스트 그레스 디렉토리가이 오류를 해결하는 방법 그래서

/opt/PostgreSQL/9.3/bin

입니다 설치? Windows와 리눅스 사이에서 Slony 복제를 수행하는 방법 (suse)?

도움을 받으실 수 있습니다.사전

+0

그것은 마치 리눅스의 마지막 것 같습니다. 파일이 있는지 확인 했으므로 postgres에서 액세스 할 수 있는지 확인하십시오. –

+0

yes slony1_funcs.2.2.0.so가 /opt/PostgreSQL/9.3/lib/postgresql에 있습니다. 사실, 우분투 컴퓨터에서 Suse 컴퓨터로 똑같은 작업을 시도했지만 정상적으로 작동했습니다. Windows 컴퓨터가 작동하지 않습니다. 수세와 함께 수행 – Jony

+0

좋습니다, 좋습니다. (1) 스크립트 (적어도 8 행까지)를 보여주고 (2) 줄 끝/문자 인코딩 문제와 같은 까다로운 것을 확인하십시오. –

답변

1

리처드 헉 스턴 덕분에, 그 사람에 따르면, 내 문제를 발견로드 'slony1_funcs.2.2.0'; 나에게 윈도우와 리눅스 모두에서 오류를주고 그때 내 슬론 버전이 다르다는 것을 깨닫는다. 윈도우에서 버전은 2.2.0이었고 리눅스에서는 2.2.2였다. (윈도우즈 용 Postgres 9.3의 Stackbuilder에서 다른 Slony 버전을 얻었다. linux)

그래서 리눅스에서 Slony 2.2.2를 제거하고 수동으로 Slony 2.2.0 for Suse Linux를 빌드하고 설치했다.

이제 Windows < ==> Linux Slony Replication이 정상적으로 작동합니다.

+1

아하! 우수한. 잘 했어. –

1

확인에

감사합니다 - 거기 설치 스크립트를 분명히 아무 문제가 없다, 그리고 우리가 윈도우 < => Windows 및 Linux < => 리눅스 작동 알고있다. 오류를 제공해야합니다

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 서버 로그를 확인하십시오. 첫 번째 오류가 거기에 기록되지 않으면 데이터베이스 및 사용자 이름으로 오류를 기록하고 다시 시도하십시오. 그렇다면 다시 슬랙을 시도해보고 그것이 우리가 생각하는 것을하고 있는지 확인하십시오.

두 번째 "로드"가 작동하면 슬랙 자체의 버그 일 수 있습니다 (줄 끝 또는 이와 유사한 작업). 그들은 http://slony.info에 언급 된 메일 링리스트를 가지고 있으며이 문제에 대한 링크를 제공하여이 문제를 해결할 것입니다.

크로스 플랫폼 복제를 수행 한 사람들이 많이 있어야하므로 Slony에 명백한 버그가 있다는 것이 이상하게 들립니다. 우리가 잃어버린 것을 볼 수는 없습니다.

+0

RichardHuxton, 귀하의 의견을 통해 슬론 버전 오류를 해결할 수있었습니다. – Jony