소스 MySQL 데이터베이스

이 섹션에는 다음 정보가 포함되어 있습니다.

  • 소스 MySQL 데이터베이스에서 가져오는 데이터가 Datastream에서 처리되는 방법
  • Datastream에서 지원되는 MySQL 데이터베이스 버전
  • MySQL 데이터베이스를 소스로 사용할 경우의 알려진 제한사항
  • 데이터를 대상으로 스트리밍할 수 있도록 소스 MySQL 데이터베이스를 설정하는 방법의 개요

동작

이 섹션에서는 Datastream을 사용하여 데이터를 복제할 때 MySQL 소스의 동작을 설명합니다. MySQL 데이터베이스에서 데이터를 처리할 때는 бинлог 기반 복제 또는 전역 트랜잭션 식별자 (GTID) 기반 복제를 사용할 수 있습니다. 스트림을 만들 때 CDC 메서드를 선택합니다.

바이너리 로그 기반 복제

Datastream은 바이너리 로그 파일을 사용하여 MySQL 데이터베이스의 데이터 변경 기록을 유지할 수 있습니다. 그런 다음 이러한 로그 파일에 포함된 정보가 대상에 복제되어 소스에서 적용된 변경사항을 재현합니다.

Datastream의 binlog 기반 복제의 주요 특성은 다음과 같습니다.

  • 특정 MySQL 소스의 모든 데이터베이스 또는 특정 데이터베이스와 데이터베이스의 모든 테이블 또는 특정 테이블을 선택할 수 있습니다.
  • 모든 이전 데이터가 복제됩니다.
  • 지정된 데이터베이스 및 테이블의 삽입, 업데이트, 삭제와 같은 모든 데이터 조작 언어 (DML) 변경사항이 복제됩니다.
  • 커밋된 변경사항만 복제됩니다.

전역 트랜잭션 식별자 (GTID) 기반 복제

Datastream은 전역 식별자 (GTID) 기반 복제도 지원합니다.

글로벌 트랜잭션 식별자 (GTID)는 MySQL 소스에서 커밋된 각 트랜잭션과 연결되어 생성되는 고유 식별자입니다. 이 식별자는 데이터베이스 클러스터의 각 노드가 자체 번호를 사용하여 자체 binlog 파일을 유지하는 바이너리 로그 기반 복제와 달리, 출처뿐만 아니라 지정된 복제 토폴로지의 모든 서버에 고유합니다. 별도의 binlog 파일을 유지하고 번호를 지정하는 것은 실패 또는 계획된 다운타임이 발생할 때 문제가 될 수 있습니다. binlog 연속성이 중단되고 binlog 기반 복제가 실패하기 때문입니다.

GTID 기반 복제는 장애 조치, 자체 관리형 데이터베이스 클러스터를 지원하며 데이터베이스 클러스터의 변경사항과 관계없이 계속 작동합니다.

Datastream의 GTID 기반 복제의 주요 특징은 다음과 같습니다.

  • 특정 MySQL 소스의 모든 데이터베이스 또는 특정 데이터베이스와 데이터베이스의 모든 테이블 또는 특정 테이블을 선택할 수 있습니다.
  • 모든 이전 데이터가 복제됩니다.
  • 지정된 데이터베이스 및 테이블의 삽입, 업데이트, 삭제와 같은 모든 데이터 조작 언어 (DML) 변경사항이 복제됩니다.
  • 커밋된 변경사항만 복제됩니다.
  • 장애 조치를 원활하게 지원합니다.

바이너리 로그 기반 복제에서 GTID 기반 복제로 전환

백필을 수행하지 않고 스트림을 업데이트하고 binlog 기반 복제에서 GTID 기반 복제로 전환하려면 다음 단계를 따르세요.

  1. GTID 기반 복제의 모든 요구사항이 충족되는지 확인합니다. 자세한 내용은 소스 MySQL 데이터베이스 구성을 참고하세요.
  2. 원하는 경우 GTID 기반 테스트 스트림을 만들고 실행합니다. 자세한 내용은 스트림 만들기를 참고하세요.
  3. GTID 기반 스트림을 만듭니다. 아직 시작하지 마세요.
  4. 소스 데이터베이스로의 애플리케이션 트래픽을 중지합니다.
  5. 기존 binlog 기반 스트림을 일시중지합니다. 자세한 내용은 스트림 일시중지를 참조하세요.
  6. Datastream이 데이터베이스에 따라잡을 때까지 몇 분 정도 기다립니다. 스트림의 스트림 세부정보 페이지에 있는 모니터링 탭의 측정항목을 사용하여 확인할 수 있습니다. 데이터 최신성처리량의 값은 0여야 합니다.
  7. GTID 기반 스트림을 시작합니다. 자세한 내용은 스트림 시작을 참고하세요.
  8. 소스 데이터베이스로의 트래픽을 재개합니다.

백필을 실행하는 것이 문제가 되지 않는 경우 BigQuery에서 테이블을 잘라내고 이전 스트림을 삭제한 후 백필을 사용하여 새 스트림을 시작할 수 있습니다. 백필 관리에 관한 자세한 내용은 스트림 객체의 백필 관리를 참고하세요.

버전

Datastream은 다음 버전의 MySQL 데이터베이스를 지원합니다.

  • MySQL 5.6
  • MySQL 5.7
  • MySQL 8.0
  • MySQL 8.4 (GTID 기반 복제에만 지원됨)

Datastream은 다음 유형의 MySQL 데이터베이스를 지원합니다.

알려진 제한사항

MySQL 데이터베이스를 소스로 사용할 경우의 알려진 제한사항은 다음과 같습니다.

  • 스트림이 테이블 10,000개로 제한됩니다.
  • 기본 키가 INVISIBLE로 정의된 테이블은 백필할 수 없습니다.
  • 행 개수가 5억 개를 초과하는 테이블은 다음 조건이 충족되지 않는 한 백필할 수 없습니다.
    1. 테이블에 고유 색인이 포함됩니다.
    2. 색인의 열 중에 null이 허용되는 열이 없습니다.
    3. 색인이 내림차순이 아닙니다.
    4. 색인의 모든 열이 스트림에 포함됩니다.
  • 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 소스에는 GTID 기반 복제를 사용하는 것이 좋습니다. Cloud SQL Enterprise Plus 인스턴스에는 다운타임이 거의 없는 유지보수가 적용되며 유지보수 중에 복제본으로 장애 조치됩니다.

GTID 기반 복제의 추가 제한사항

  • GTID 기반 복제를 사용하는 스트림을 복구하는 기능은 Datastream API를 사용할 때만 사용할 수 있습니다.
  • CREATE TABLE ... SELECT 문을 사용하여 다른 테이블에서 테이블을 만드는 작업은 지원되지 않습니다.
  • Datastream은 태그된 GTID를 지원하지 않습니다.
  • GTID 기반 복제에 적용되는 MySQL 제한사항은 MySQL 문서를 참고하세요.

다음 단계