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

Datastream에서 안정적인 복제를 유지하고 다운타임을 최소화하려면 스트림과 소스 데이터베이스 전반에 운영 권장사항을 적용하면 됩니다. 이러한 권장사항은 스트림의 소스 데이터베이스를 전환하고, 측정항목 알림을 구성하고, 지연 시간을 해결하고, 스트림당 테이블 한도를 계획하는 데 도움이 됩니다.

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

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

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

Datastream의 알림 및 모니터링

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

Datastream 알림

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

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

    **알림** 으로 이동

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

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

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

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

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

  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개의 테이블을 포함하는 것이 좋습니다. 테이블 크기에는 제한이 없습니다. 테이블이 더 많은 스트림을 만들어야 하는 경우 스트림이 오류 상태로 전환될 수 있습니다. 이를 방지하려면 소스를 여러 스트림으로 분할하는 것이 좋습니다.