이 섹션에는 다음 정보가 포함되어 있습니다.
- 소스 MySQL 데이터베이스에서 가져오는 데이터가 Datastream에서 처리되는 방법
- Datastream에서 지원되는 MySQL 데이터베이스 버전
- MySQL 데이터베이스를 소스로 사용할 경우의 알려진 제한사항
- 데이터를 대상으로 스트리밍할 수 있도록 소스 MySQL 데이터베이스를 설정하는 방법의 개요
동작
이 섹션에서는 Datastream을 사용하여 데이터를 복제할 때 MySQL 소스의 동작을 설명합니다. MySQL 데이터베이스에서 데이터를 수집할 때는 бинлог 기반 복제 또는 전역 트랜잭션 식별자 (GTID) 기반 복제 (미리보기)를 사용할 수 있습니다. 스트림을 만들 때 CDC 메서드를 선택합니다.
바이너리 로그 기반 복제
Datastream은 바이너리 로그 파일을 사용하여 MySQL 데이터베이스의 데이터 변경 기록을 유지할 수 있습니다. 그런 다음 이러한 로그 파일에 포함된 정보가 대상에 복제되어 소스에서 적용된 변경사항을 재현합니다.
Datastream의 binlog 기반 복제의 주요 특성은 다음과 같습니다.
- 특정 MySQL 소스의 모든 데이터베이스 또는 특정 데이터베이스와 데이터베이스의 모든 테이블 또는 특정 테이블을 선택할 수 있습니다.
- 모든 이전 데이터가 복제됩니다.
- 지정된 데이터베이스 및 테이블의 삽입, 업데이트, 삭제와 같은 모든 데이터 조작 언어 (DML) 변경사항이 복제됩니다.
- 커밋된 변경사항만 복제됩니다.
전역 트랜잭션 식별자 (GTID) 기반 복제
Datastream은 전역 식별자 (GTID) 기반 복제도 지원합니다.
글로벌 트랜잭션 식별자 (GTID)는 MySQL 소스에서 커밋된 각 트랜잭션과 연결되어 생성되는 고유 식별자입니다. 이 식별자는 데이터베이스 클러스터의 각 노드가 자체 번호를 사용하여 자체 binlog 파일을 유지하는 바이너리 로그 기반 복제와 달리, 출처뿐만 아니라 지정된 복제 토폴로지의 모든 서버에 고유합니다. 개별 바이너리 로그 파일을 유지하고 번호를 지정하는 것은 실패 또는 계획된 다운타임이 발생할 때 문제가 될 수 있습니다. 바이너리 로그 연속성이 중단되고 바이너리 로그 기반 복제가 실패하기 때문입니다.
GTID 기반 복제는 장애 조치, 자체 관리형 데이터베이스 클러스터를 지원하며 데이터베이스 클러스터의 변경사항과 관계없이 계속 작동합니다.
Datastream의 GTID 기반 복제의 주요 특징은 다음과 같습니다.
- 특정 MySQL 소스의 모든 데이터베이스 또는 특정 데이터베이스와 데이터베이스의 모든 테이블 또는 특정 테이블을 선택할 수 있습니다.
- 모든 이전 데이터가 복제됩니다.
- 지정된 데이터베이스 및 테이블의 삽입, 업데이트, 삭제와 같은 모든 데이터 조작 언어 (DML) 변경사항이 복제됩니다.
- 커밋된 변경사항만 복제됩니다.
- 장애 조치를 원활하게 지원합니다.
버전
Datastream은 다음 버전의 MySQL 데이터베이스를 지원합니다.
- MySQL 5.6
- MySQL 5.7
- MySQL 8.0
MySQL 8.4 (GTID 기반 복제에만 지원됨)
Datastream은 다음 유형의 MySQL 데이터베이스를 지원합니다.
- 자체 호스팅 MySQL
- MySQL용 Cloud SQL
- MySQL용 Amazon RDS
- Amazon Aurora MySQL
- MariaDB
- Alibaba Cloud PolarDB
- Percona Server for MySQL
알려진 제한사항
MySQL 데이터베이스를 소스로 사용할 경우의 알려진 제한사항은 다음과 같습니다.
- 스트림이 테이블 10,000개로 제한됩니다.
- 기본 키가
INVISIBLE
로 정의된 테이블은 백필할 수 없습니다. - 행 개수가 5억 개를 초과하는 테이블은 다음 조건이 충족되지 않는 한 백필할 수 없습니다.
- 테이블에 고유 색인이 포함됩니다.
- 색인의 열 중에 null이 허용되는 열이 없습니다.
- 색인이 내림차순이 아닙니다.
- 색인의 모든 열이 스트림에 포함됩니다.
- Datastream은 이벤트가 처리될 때 소스에서 최신 스키마를 주기적으로 가져옵니다. 스키마가 변경되면 Datastream이 스키마 변경사항을 감지하고 스키마 가져오기를 트리거합니다. 그러나 일부 이벤트가 잘못 처리되거나 스키마 가져오기 사이에 삭제되어 데이터가 불일치할 수 있습니다.
- 소스 스키마에 대한 모든 변경사항이 올바르게 검색되지 않아서 데이터 손상이 발생할 수 있습니다. 다음 스키마 변경으로 인해 데이터가 손상되거나 이벤트 다운스트림을 처리하지 못할 수 있습니다.
- 열 삭제
- 테이블 중간에 열 추가
- 열의 데이터 유형 변경
- 열 재정렬
- 테이블 삭제(새 데이터를 추가한 후 같은 테이블을 다시 만드는 경우에 해당)
- 테이블 자르기
- DataStream은 뷰 복제를 지원하지 않습니다.
- Datastream은 공간 데이터 유형의 열을 지원하지 않습니다. 이러한 열의 값은
NULL
값으로 바뀝니다. - Datastream은
DATETIME
,DATE
,TIMESTAMP
데이터 유형의 열에서 0 값(0000-00-00 00:00:00
)을 지원하지 않습니다. 0 값은NULL
값으로 바뀝니다. - DataStream은
JSON
열에DECIMAL
,NEWDECIMAL
,TIME
,TIME2
,DATETIME
,DATETIME2
,DATE
,TIMESTAMP
,TIMESTAMP2
값을 포함하는 행의 복제를 지원하지 않습니다. 이러한 값을 포함하는 이벤트는 삭제됩니다. - Datastream은 바이너리 로그 트랜잭션 압축을 지원하지 않습니다.
- Datastream은 소스 MySQL 연결 프로필에서 SSL 인증서 체인을 지원하지 않습니다. 단일 x509 PEM 인코딩 인증서만 지원됩니다.
- Datastream은 연쇄 삭제를 지원하지 않습니다. 이러한 이벤트는 바이너리 로그에 기록되지 않으며, 따라서 대상에 전파되지 않습니다.
- 바이너리 로그 기반 복제를 사용하는 경우 Datastream은 복제본에 대한 장애 조치를 지원하지 않습니다. 따라서 MySQL용 Cloud SQL Enterprise Plus 소스에서 복제하기 위해 Datastream을 사용하지 않는 것이 좋습니다. Cloud SQL Enterprise Plus 버전 인스턴스는 다운타임이 0에 가까운 유지보수가 적용되며 유지보수 중에 복제본으로 장애 조치됩니다. 바이너리 로그 연속성이 중단되어 영향을 받는 스트림은 영구적으로 실패합니다.
GTID 기반 복제의 추가 제한사항
- GTID 기반 복제를 사용하는 경우 스트림 복구가 지원되지 않습니다.
CREATE TABLE ... SELECT
문을 사용하여 다른 테이블에서 테이블을 만드는 작업은 지원되지 않습니다.- GTID 기반 복제에 적용되는 MySQL 제한사항은 MySQL 문서를 참고하세요.
다음 단계
- Datastream에 사용할 MySQL 소스를 구성하는 방법을 알아보세요.