Yugabyte: 지원되는 객체 및 작업
다음 목록에서는 Oracle GoldenGate for Yugabyte에 대해 지원되는 객체 및 작업에 대해 설명합니다.
-
Oracle GoldenGate Extract는
yboutput플러그인을 지원합니다. -
복제 ID
CHANGE은 유가바이트에 대한 고유 설정이며, 다른 복제 ID 유형에 비해 더 나은 성능을 제공하므로yboutput플러그인을 사용할 때 권장됩니다. -
양방향 복제는
yboutput플러그인에서 지원됩니다. 양방향 복제에yboutput플러그인을 사용하는 경우 CDC 추출 프로세스를 시작하기 전에 Oracle GoldenGate 체크포인트 테이블을 생성하여 게시 목록에 포함해야 합니다.또한 복제 슬롯은 체크포인트 테이블이 만들어지고 게시에 추가된 후에만 만들어야 합니다.
-
양방향 복제는
test_decoding플러그인에서 지원됩니다.test_decoding플러그인을 사용할 때 Extract를 등록하기 전에 체크포인트 테이블을 포함한 모든 테이블을 생성해야 합니다.PGOUTPUT플러그인의 경우, 체크포인트 테이블과 다른 모든 관심있는 테이블은 Extract 등록 전에 게시에 포함되어야 합니다.
주: 체크포인트 테이블을 포함하는 테이블은 삭제하지 마십시오.
-
여러 자르기 작업은
pgoutput/yboutput플러그인에서만 지원됩니다. -
pgplugintype옵션으로 구성된 Register 명령:-
pgplugintype옵션은 웹 인터페이스와 Admin Client 모두에서REGISTER EXTRACT명령으로 사용할 수 있습니다. 이 옵션을 사용하면test_decoding또는pgoutput를 논리적 디코딩 플러그인으로 선택할 수 있습니다. -
pgplugintype pgoutput를 지정하면 기본 모듈은 자동으로yboutput플러그인을 사용하여 Extract 프로세스를 등록합니다. -
pgplugintype를 지정하지 않을 경우 CDC Extract는 기본적으로test_decoding플러그인을 사용하여 등록합니다. -
유가바이트의
yboutput플러그인에 명시적으로 등록하려면pgoutput플러그인 유형을 지정해야 합니다.
구문:
<pre class="copy"><code>REGISTER EXTRACT *group_name* PGPLUGINTYPE *plugin_option*;</code></pre>예제:
<pre class="copy"><code>REGISTER EXTRACT ext_yb PGPLUGINTYPE pgoutput;</code></pre> -
-
STREAMINGOPTIONS매개변수는TRANLOGOPTIONS아래에 도입되었습니다. 이 매개변수를 사용하면 복제 시작 명령에 대해publication_name를 지정할 수 있습니다.예제:
TRANLOGOPTIONS STREAMINGOPTIONS (publication_names="my*123,my_publication2,123 pub,my_publication";)이 매개변수를 사용할 때는 다음 지침 및 제한 사항을 고려해야 합니다.
- 추출 프로세스를 등록하기 전에 게시를 생성해야 합니다.
게시 이름에는 콤마(,) 작은 따옴표(') 큰 따옴표(")를 비롯한 특수 문자가 포함되지 않아야 합니다.
-
여러 등록 이름을 publication_names 내에서 콤마로 구분된 목록으로 지정할 수 있습니다. 예:
TRANLOGOPTIONS STREAMINGOPTIONS (publication_names="my*123,my_publication2,123 pub,my_publication";)
목록의 최종 게시 이름은 세미콜론(;)으로 끝나야 합니다.
유가바이트 제한 사항
캡처 및 전달을 위해 데이터베이스를 설정하는 동안 Yugabyte 데이터베이스에 대해 다음 제한 사항을 고려하십시오.
-
대형 LOB 트랜잭션 누락: LOB(대형 객체)의 크기가 200MB에서 400MB 사이인 경우 INSERT 또는 UPDATE에 관계없이 전체 트랜잭션이 CDC 스트림에서 누락될 수 있습니다.
-
동일한 트랜잭션의 다중 업데이트로 인해 다운스트림에서 데이터 불일치: 동일한 트랜잭션 내에서 여러 업데이트가 발생하는 경우 테이블의 복제 ID가
FULL또는DEFAULT로 설정된 경우 유가바이트의CDCSDK모듈에서 올바른 AFTER 이미지를 전송하지 못할 수 있습니다. 이로 인해 다운스트림 시스템의 AFTER 이미지에 대한 데이터 불일치가 발생할 수 있습니다. -
복제된 테이블(test_decoding 플러그인)에서 DDL 후 복제 접속이 종료됨:
test_decoding플러그인을 사용하면 데이터베이스의 모든 테이블이 폴링 목록에 기본적으로 자동으로 포함됩니다. 이 리스트에 포함된 테이블에서 테이블 삭제와 같은 DDL 작업이 수행되면 서버는 복제 연결을 종료합니다. 그러나 폴링 목록의 일부인 테이블 삭제는test_decoding플러그인에서 지원되지 않으므로 이 유연성이 필요한 경우yboutput플러그인으로 전환해야 합니다.주: 테이블을 삭제하기 전에 복제 오류나 연결 중단을 방지하기 위해 게시에 포함되지 않았는지 확인하십시오. 마찬가지로 Oracle GoldenGate 체크포인트 테이블도 동일한 오류를 발생시키므로 삭제하지 마십시오.
-
확장된 비활동성으로 인한 복제 슬롯 만료: 복제 슬롯은 복제에 필요한 WAL(먼저 쓰기 로그) 레코드의 가비지 수집을 방지하기 위해 특정 리소스를 보유합니다. 슬롯이 장기간 비활성 상태로 유지되면 만료됨으로 표시되고 유지된 리소스가 해제됩니다. 만료 후 복제 슬롯은 사용할 수 없게 되므로 다시 만들어야 합니다.
기본 보존 기간:
-
버전 2024.2.1부터 8시간
-
2024.2.1 이전 버전의 4시간
이것은 Yugabyte 사이트에 언급 된 알려진 문제입니다 :
https://github.com/yugabyte/yugabyte-db/issues/27766
만료 방지를 위한 권장 작업:
-
하트비트 기능을 사용으로 설정하여 지속적인 WAL 작업을 보장하고 긴 유휴 기간을 방지합니다.
-
CDC 프로세스가
CDCSDK모듈에 자동으로 다시 연결되도록 CDC 프로세스에 대한 autostart 또는 autorestart 옵션을 구성하여 작동 중지 시간을 최소화하고 슬롯 만료를 방지합니다.
-
-
BatchMechanism 3가 진행 중인 DD 드라이버(유가바이트 Replicat 프로세스의 기본값)로 설정된 경우 BatchSQL가 올바르게 작동하지 않습니다. 따라서 BatchSQL를 사용해야 하는 경우 Replicat 매개변수 파일에서 적절한 기능을 위해 DBOPTIONS _BatchMechanism 2 설정을 구성해야 합니다. 이 임시해결책은 Oracle GoldenGate 23.10 이상(유가바이트)의 Replicat 프로세스에 적용할 수 있습니다. -
게시에만 적합한 테이블: 게시에 영구 기본 테이블 및 분할된 테이블을 포함할 수 있습니다. 다음 객체 유형은 게시에 포함될 수 없습니다.
-
임시 테이블
-
기록되지 않은 테이블
-
외래 테이블
-
구체화된 뷰
-
일반 뷰
-
-
CDC Extract에 대한 게시 삭제 영향: CDC Extract가 계속 실행 중인 동안 게시가 삭제되면 복제 슬롯 손상으로 인해 작동이 중지될 위험이 있습니다. 이러한 경우 영향을 받는 복제 슬롯을 사용할 수 없게 되고, 단순히 동일한 게시를 다시 만들면 문제가 해결되지 않습니다. 기존 스트림에서 재개할 수 있는 솔루션은 없으며, 새 게시를 만들어 새 복제 슬롯과 연관시키는 방법만 있습니다.
-
시간대 제한(TZ): WAL 발신자 프로세스는 항상 커밋된 시간 기록을 UTC로 전송합니다. Oracle GoldenGate 세션 시간대가 UTC와 다른 경우 CDC Extract 프로세스에서 시간기록별로 위치를 지정하는 동안 불일치가 발생할 수 있습니다. 이 문제를 방지하려면 배치 계층에서 환경 변수
TZ=UTC를 설정해야 합니다. 이러한 제한은yboutput플러그인에 특히 적용됩니다. -
pgoutput플러그인은 유가바이트에 대해 지원되지 않습니다. -
전역화는
yboutput플러그인에서 지원되지 않습니다. -
테이블의 기본 키: 기본 키가 있는 테이블만 유가바이트 단위의 CDC 스트리밍에 지원됩니다. 기본 키가 없는 테이블은 Oracle GoldenGate CDC Extract에서 캡처되지 않습니다.
-
유가바이트의 기본 키 업데이트: Yugabyte의 PK UPDATE는 DELETE와 INSERT로 기록됩니다. Oracle GoldenGate Extract는 PK UPDATE에 대한 통계를 DELETE 및 INSERT로만 표시합니다. 통계는 Extract 통계에서 업데이트 작업으로 표시되지 않지만 소스 및 대상의 데이터에는 불일치가 없습니다.
-
복제 ID 동작: 슬롯이 생성된 후에는 슬롯 생성 시 존재하는 테이블의 복제본 ID를 변경할 수 없습니다. 그러나 슬롯 생성 후 생성된 모든 새 테이블의 복제본 ID는
ysql_yb_default_replica_identity,cdcsdk_publication_list_refresh_interval_secs및csdk_enable_dynamic_table_support tserver플래그를 사용하여 설정할 수 있습니다. 새 테이블이 생성되기 전에 이러한 플래그를 마스터 및t-server에 설정해야 합니다.기본적으로
cdcsdk_publication_list_refresh_interval_secs는 900초(15분)로 설정됩니다. 요구 사항에 따라 설정해야 합니다. 값을 줄이면 새로 생성된 테이블이 CDCSDK 모듈에서 빠르게 새로 고쳐지므로 Oracle GoldenGate가 이러한 새 테이블에 대한 레코드를 캡처하는 데 도움이 됩니다. 다음 예에서는 SLOT이 생성된 후 동적으로 생성된 테이블에 대해 설정된 플래그를 보여줍니다.ysql_yb_default_replica_identity=FULL,cdcsdk_publication_list_refresh_interval_secs=120,cdcsdk_enable_dynamic_table_support=true -
EOL(로그 끝) 또는 EOF(파일 끝)별 위치 지정은 지원되지 않습니다.: EOL/EOF 대신 현재 시간 기록별로 슬롯 위치를 변경하여 기존 레코드를 필터링할 수 있습니다.
-
잘라내기 작업:
GETTRUNCATES/IGNORETRUNCATES과 같은 매개변수는 사용자가 변경 데이터 캡처에 대해 사용으로 설정된 경우 테이블을 잘라낼 수 없으므로 지원되지 않습니다. -
WAL 보존: 유가바이트는 일반적으로 일정 기간 후 WAL 세그먼트를 비웁니다. 즉, Extract가 더 오랫동안 작동 중지될 때 로그가 잘릴 경우 Oracle GoldenGate에서 WAL 로그 데이터가 손실될 수 있습니다. WAL 보존은
cdc_intent_retention_ms및cdc_wal_retention_time_secs와 같은 두 개의 매개변수가 더 오랫동안WAL로그를 보존하도록 조정될 때까지 유가바이트에서 보장되지 않습니다. Oracle GoldenGate Extract 프로세스가 실행 중인 모든 노드 또는 클러스터에서 이를 조정해야 합니다.권장되는 값은 다음과 같습니다.
cdc_wal_retention_time_secs=86400cdc_intent_retention_ms = 86400000 -
UNREGISTER EXTRACT명령: Oracle GoldenGate는UNREGISTER EXTRACT명령을 사용하여 복제 슬롯을 삭제합니다. 복제 슬롯은 해당 슬롯에서 소비하는 클라이언트가ysql_cdc_active_replication_slot_window_ms기간 이상 중지된 후에만 삭제할 수 있습니다. 플래그의 기본값은 5분입니다. 즉, 사용되지 않는 것으로 간주되기 전에 복제 슬롯이 비활성 상태로 유지될 수 있는 최대 시간대를 기다려야 합니다.클러스터 설정의 경우 동일한 값을 가진 모든 노드에서 이 매개변수를 조정해야 합니다.
-
BLOB/CLOB제한 사항: 텍스트/이미지와 같은 데이터 유형은 200MB의 데이터만 캡처하는 데 제한이 있습니다. 행 크기는 32MB를 초과하지 않아야 하며 LOB 데이터를 포함하는 각 열은 최대 2MB까지 유지되어야 합니다.https://docs.yugabyte.com/stable/develop/best-practices-ysql/#row-크기 제한
-
SAVEPOINT 및 DML 작업에서 롤백의 제한 사항: Oracle GoldenGate CDC Extract는
SAVEPOINT롤백 작업을 지원하지 않습니다. CDCtest_decoding플러그인은ROLLBACK TO SAVEPOINT명령을 준수하지 않습니다. 따라서 롤백으로 인해 제외되어야 하는 레코드는 Extract에 의해 계속 캡처되고 처리됩니다.이 동작은 유가바이트 CDC SDK 모듈의 알려진 제한 사항입니다. 자세한 내용은 다음 링크를 참조하십시오.
https://yugabyte.atlassian.net/browse/DB-11714
https://docs.yugabyte.com/stable/develop/change-data-capture/using-logical-replication/#limitations
-
드롭 테이블 제한: 슬롯이 생성되면 사용자는 슬롯이 삭제될 때까지 데이터베이스에서 테이블을 삭제하지 않아야 합니다. 슬롯이 활성 상태이고 사용자가 데이터베이스에서 테이블을 삭제하려고 하면 CDC Extract가 복제의 일부인 다른 CDC 테이블의 레코드를 캡처할 수 없습니다. 또한 CDC 추출이 실행 중인 경우 사용자가 슬롯이 생성된 데이터베이스에서 테이블을 삭제하지 않는 것이 좋습니다. 이를 따르지 않으면 CDC Extract가 다음과 유사한 연결 해제 오류와 함께 비정상 종료됩니다.
Error: The server has ended the streaming connection. -
statement_timeout 제한 사항: Yugabyte 매개변수
statement_timeout는 사용자 또는 데이터베이스 레벨에서 수정하지 않아야 하며 기본값으로 유지되어야 합니다. 값이 낮게 설정된 경우 CDC Extract가WAL에서 레코드를 읽을 수 없습니다. 필요한 경우 항상 세션 레벨에서만 설정해야 합니다. -
읽기 전용 모드로 복제본 노드의 슬롯 생성은 지원되지 않습니다.: CDC Extract는 복제본 노드에서 레코드를 캡처할 수 없습니다. 이는 2024.2.1.0 또는 2024.2.2.0과 같이 지원하는 버전이 복제본 노드에서 슬롯 만들기를 지원하지 않는 PostgreSQL 11.2 위에 구축되기 때문입니다.