Datastream 사용 시 일반적인 권장사항

이 페이지에는 Datastream 사용에 대한 권장사항을 제시합니다. 여기에는 Datastream을 사용할 때의 일반적인 권장사항이 포함됩니다.

스트림의 소스 데이터베이스 변경

경우에 따라 스트림의 소스 데이터베이스를 변경해야 할 수 있습니다. 예를 들어 기본 데이터베이스 인스턴스가 아닌 복제본에서 복제하도록 스트림을 수정해야 할 수 있습니다.

  1. 복제본 인스턴스의 연결 프로필을 만듭니다.
  2. 생성한 복제본의 연결 프로필과 대상의 기존 연결 프로필을 사용하여 스트림을 만듭니다.
  3. 이전 백필이 사용 중지된 상태로 스트림을 시작합니다. 스트림이 시작되면 바이너리 로그의 데이터만 가져옵니다.
  4. 선택사항입니다. 스트림을 실행한 후 수정하여 자동 백필을 사용 설정합니다.
  5. 기본 인스턴스에서 읽는 스트림을 일시중지합니다.
  6. 선택사항입니다. 기본 인스턴스에서 데이터를 스트리밍한 스트림을 삭제합니다.
  7. 선택사항입니다. 기본 인스턴스의 연결 프로필을 삭제합니다.

Datastream의 알림 및 모니터링

Datastream 대시보드에는 많은 정보가 포함되어 있습니다. 이 정보는 디버깅 목적으로 유용할 수 있습니다. 로그에서 추가 정보를 확인할 수 있으며 이는 Cloud Logging에서 제공됩니다.

Datastream 알림

Datastream에 설정된 기본 알림이 없습니다. 예를 들어 개요 탭에서 알림 정책 만들기 링크를 클릭하여 데이터 업데이트 빈도 측정항목에 대한 알림 정책을 만들 수 있습니다. 나머지 측정항목의 경우 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서  알림 페이지로 이동합니다.

    알림으로 이동

  2. 정책 만들기를 클릭합니다.

  3. 측정항목 선택 드롭다운을 클릭합니다.

  4. 필터 필드에 Datastream를 입력합니다.

  5. 선택사항: 사용 가능한 모든 측정항목을 보려면 활성 필터를 사용 중지해야 할 수 있습니다.

  6. 데이터 스트림에서 모니터링할 측정항목을 검색합니다.

  7. 적용을 클릭합니다.

  8. 선택사항: 필터 추가데이터 변환 섹션에 필요한 세부정보를 입력합니다. 다음을 클릭합니다.

  9. 알림 트리거 구성 섹션에 필수 정보를 입력합니다. 다음을 클릭합니다.

  10. 알림 구성 및 완료 섹션에서 알림을 구성합니다.

  11. 알림을 검토하고 준비가 되면 정책 만들기를 클릭합니다.

    각 단계를 완료하는 방법에 대한 자세한 내용은 알림 정책 만들기를 참고하세요.

다음 Datastream 측정항목에 대한 알림을 만드는 것이 좋습니다.

  • 데이터 최신 상태
  • 지원되지 않는 스트림 이벤트 수
  • 스트림 총 지연 시간

이러한 측정항목에 대한 알림은 스트림 또는 소스 데이터베이스에 문제가 있음을 나타낼 수 있습니다.

지연 시간 이해

Datastream은 복제 지연 시간을 이해하는 데 도움이 되는 다음과 같은 측정항목을 제공합니다.

  • 데이터 최신 상태: 데이터가 소스에 커밋된 시간과 Datastream에서 데이터를 읽은 시간 간의 차이입니다. 이 측정항목이 높으면 Datastream이 소스에서 생성되는 속도보다 느리게 데이터를 읽고 있음을 나타냅니다. 이는 소스에 문제가 있거나 소스와의 네트워크 연결에 문제가 있음을 나타냅니다.
  • 시스템 지연 시간: Datastream이 소스에서 이벤트를 읽은 시점부터 대상에 작성될 때까지 이벤트를 처리하는 데 걸리는 시간입니다.
  • 총 지연 시간: 엔드 투 엔드 복제 지연 시간으로, 데이터가 소스에 커밋된 시점부터 대상에 기록될 때까지의 총 시간을 나타냅니다.

데이터 최신 상태가 높은 경우 일반적인 원인은 다음과 같습니다.

  • 소스 오버로드: 소스 데이터베이스가 Datastream이 읽을 수 있는 속도보다 빠르게 로그 (binlog 파일, 재실행 로그 파일, WAL 파일)를 생성합니다.
    • MySQL/Oracle 조치: maxConcurrentCdcTasks 매개변수를 늘려 더 많은 로그를 병렬로 읽습니다.
    • PostgreSQL 작업: 높은 이탈률을 보이는 테이블을 전용 스트림으로 격리합니다.
    • SQL Server 작업: maxConcurrentCdcTasks 매개변수를 늘려 변경 테이블을 더 많이 병렬로 읽습니다.
  • 소스 리소스 부족: 소스 데이터베이스 서버 자체에 CPU 사용량 증가, 메모리 부족 또는 디스크 I/O 병목 현상과 같은 문제가 발생합니다.
    • 조치: 소스 인스턴스가 정상인지 확인합니다. CPU/RAM 사용량을 확인합니다. PostgreSQL의 경우 logical_decoding_work_mem 매개변수의 값을 늘리고 Oracle의 경우 충분한 시스템 전역 영역 (SGA)이 할당되었는지 확인합니다.
  • 네트워크 용량 문제: 소스와 Google Cloud간의 높은 핑 시간 또는 포화된 대역폭
    • 작업: VPN 또는 Cloud Interconnect 대역폭 및 지연 시간을 모니터링합니다.
  • 단일 대규모 트랜잭션: 수백만 개의 행에 대한 UPDATE와 같은 대규모 일괄 작업은 일시적인 지연 시간 급증을 일으킬 수 있습니다.
    • 조치: 정상적인 동작입니다. Datastream이 대규모 이벤트를 처리할 때까지 기다립니다. 향후 대규모 배치 작업을 작은 단위로 나누는 것이 좋습니다.

시스템 지연 시간이 높으면 Datastream 또는 대상에 문제가 있음을 나타낼 수 있습니다.

  • 작업: Cloud Logging에서 지속적인 행 수준 오류를 확인합니다 (예: invalid input for type json). 데이터 유형 또는 제약 조건 오류로 인해 스트림이 재시도 루프에 있는 경우 소스에서 데이터를 수동으로 수정해야 할 수 있습니다. 명백한 오류가 없으면 Google 지원팀에 문의하여 도움을 받으세요.

단일 스트림에서 처리할 수 있는 테이블 수는 몇 개인가요?

단일 스트림에는 최대 10,000개의 테이블을 포함하는 것이 좋습니다. 테이블 크기에는 제한이 없습니다. 테이블이 더 많은 스트림을 만들어야 하는 경우 스트림이 오류 상태가 될 수 있습니다. 이를 방지하려면 소스를 여러 스트림으로 분할하는 것이 좋습니다.