2011-11-14 2 views
4

최근에 나는 Tungsten Replicator으로 이기종 dbs 간의 복제 작업을하고 있습니다. 우리는 MySQL 마스터와 오라클 슬레이브를 가지고 있습니다. 문서에 따르면 그러한 설정이 효과가 있습니다. 나는 텅스텐 - 리플리케이터 2.0.5를 사용하고있다. 나는 두 노드에 기본 설치를 만들기위한 마스터 노드에텅스텐으로 이기종 복제를 설정하는 방법은 무엇입니까?

$TUNGSTEN_HOME/tools/configure \ 
    --verbose \ 
    --home-directory=$INSTALL_HOME \ 
    --cluster-hosts=$MA_HOST,$SL_HOST \ 

를 호출합니다. 참고 : 설치 프로그램이 종속 노드에서 mysql 인스턴스를 찾지 못하기 때문에 이기종 설치로 인해 설치 프로그램 사용 (권장)이 실패합니다. 복제 자 인스턴스는 conf- 디렉토리에 static- $ SERVICENAME.properties를 추가하고 conf/services.properties (replicator.host = $ HOSTNAME, replicator.masterListenPortStart = 12112, replicator.rmi_port = 20000)를 수정하여 구성합니다.

SQL 문에서 'timestamp'키워드가 누락되어서 텅스텐 스키마에서 trep_commit_seqno에 대한 update 문을 발행 할 때 복제기를 시작하면 ORA-01850이 발생합니다. 이 오류를 극복하기 위해 update_timestamp 및 extract_timestamp의 데이터 유형을 varchar로 변경했습니다. 플리 이제 복제 곳 싶게 몇 가지 간단한 삽입을 시작하지만, 테스트 스크립트는

DROP TABLE IF EXISTS table1; 

복제를 발행 할 때 때문에 '존재하는 경우'절에, 인해 ORA-00933에 실패한다. 이 구성에 오류가 있거나 텅스텐에 일반적으로 두 제품 간의 DDL 문 차이점에 문제가 있는지 확실하지 않습니다. 누군가 텅스텐을 사용하여 유사한 복제를 성공적으로 설정 했습니까?

답변

2

텅스텐 문서에는 몇 가지 유용한 지침이 있습니다. 특히, "고급 작동 원리"의이 점은 적합합니다. "또한 가장 단순한 CREATE TABLE 표현식을 뛰어 넘는 DDL 문은 거의 이식성이 거의 없습니다." 귀하의 경우 DROP TABLE IF EXISTS table1;은 유효한 Oracle DDL이 아닙니다.

Read it here.

+0

답변 해 주시고 정보를 알려 주셔서 감사합니다. 나는 내 목적을 위해 필터를 구현해야한다고 생각한다. – GLA

+0

@MithunSasidharan - 포인트를 구걸해서는 안됩니다. 품위가 없습니다. – APC

2

관심이있는 사람 : 텅스텐은 이기종 환경에서 ddl 문을 변환하지 않습니다 (MithunSasidharan이 작성한 것처럼). 이제 정규식을 사용하여 ddl 문을 건너 뛰는 사용자 지정 필터를 작성했습니다. 스키마 결정을 동기화하기 위해 우리는 Apache DdlUtils을 사용할 것이고, 이것은 mysql과 oracle 사이의 스키마 정의를 변환하는데 아주 잘 사용된다. 나는 다른 공급 업체에게도 마찬가지로 잘 작동한다고 가정합니다. 감사.

관련 문제