MySQL로 대체 실행

이 가이드에서는 Spanner에서 소스 MySQL 인스턴스로 대체 및 재해 복구 롤백을 수행하는 방법을 설명합니다.

Spanner로 전환한 후 예기치 않은 성능 저하, 복구 불가능한 애플리케이션 오류 또는 중요한 기능 차단기가 발생하면 다음 섹션의 절차를 사용하여 MySQL 기본 인스턴스로 롤백합니다.

시작하기 전에

대체 절차를 시작하기 전에 다음 필수사항을 확인하세요.

  1. 활성 역방향 복제: 역방향 복제 Dataflow 파이프라인 (Spanner_to_SourceDb)이 실행 중이고 forward_migration 필터링 모드에서 Spanner 변경 내역을 활발하게 사용하고 있는지 확인합니다. 자세한 내용은 MySQL로 대체 구성을 참조하세요.
  2. 소스 MySQL 가용성: 소스 MySQL 데이터베이스가 온라인 상태이고 Dataflow에서 연결할 수 있으며 쓰기 연결을 수락할 수 있는지 확인합니다.
  3. 유지보수 기간: Spanner 쓰기가 일시중지되고 역방향 복제가 드레인되는 동안 계획된 다운타임 기간 이 필요함을 관계자에게 알립니다.

필요한 역할

Spanner 쓰기 일시중지

  1. 애플리케이션에서 Spanner로의 모든 데이터베이스 쓰기 트래픽을 일시중지합니다.
  2. Spanner에서 활성 트랜잭션이 완전히 커밋되고 드레인되도록 허용합니다.

역방향 복제가 드레인되도록 허용

다음 섹션에서는 애플리케이션 쓰기를 전환하기 전에 전환 후 Spanner에 작성된 모든 변경사항이 MySQL로 다시 복제되는지 확인하는 방법을 설명합니다.

복제 지연 모니터링

복제 지연을 추적하여 모든 진행 중인 변경사항이 MySQL에 작성되었는지 확인합니다.

  1. 콘솔 Google Cloud 에서 역방향 복제 Dataflow 작업의 작업 세부정보 페이지로 이동합니다.
  2. 맞춤 측정항목 탭에서 replication_lag_in_seconds_LOGICAL_SHARD_NAME_MAX 사용자 카운터를 검사합니다. 자세한 내용은 MySQL로 대체 구성을 참조하세요.
  3. 카운터 값이 0에 도달할 때까지 기다립니다.

또는 측정항목 탐색기에서 모니터링 쿼리 언어 (MQL)를 사용하여 사용자 카운터를 쿼리합니다.

fetch dataflow_job
| metric 'dataflow.googleapis.com/job/user_counter'
| filter (metric.job_id == 'JOB_ID' && metric.metric_name == 'replication_lag_insecondsLOGICAL_SHARD_NAME_MAX')
| group_by 1m, [value_p99_latency: percentile(value.user_counter, 99)]
| every 1m
    
다음을 바꿉니다. * JOB_ID: 역방향 복제 Dataflow 작업의 ID입니다. * LOGICAL_SHARD_NAME: 소스 데이터베이스에 구성된 논리적 샤드 이름입니다.

MySQL 쓰기 활동 확인

소스 데이터베이스에서 역방향 복제 쓰기 작업이 완료되었는지 확인합니다.

  1. 소스 MySQL 기본 데이터베이스에서 활성 쿼리 및 데이터베이스 연결 측정항목을 검사합니다.
  2. 역방향 복제 파이프라인의 쓰기 트래픽이 중지되었는지 확인합니다.

클린 DLQ 상태 확인

데드 레터 큐 (DLQ)를 검사하여 역방향 복제 중에 처리되지 않은 오류가 발생하지 않았는지 확인합니다.

  1. 콘솔 Google Cloud 에서 역방향 복제 Dataflow 작업의 작업 세부정보 페이지로 이동합니다. 맞춤 측정항목 탭에서 severe_error_count 사용자 카운터를 검사합니다.
  2. Cloud Storage에서 심각한 역방향 복제 DLQ 디렉터리와 재시도 역방향 복제 DLQ 디렉터리를 모두 검사합니다 (예: gs://MIGRATION_BUCKET/ENV/SERVICE/reverse/DB_SCHEMA/severe/ 및 gs://MIGRATION_BUCKET/ENV/SERVICE/reverse/DB_SCHEMA/retry/).

    gcloud CLI CLI를 사용하여 심각한 DLQ 디렉터리의 콘텐츠를 나열할 수 있습니다.

    gcloud storage ls gs://MIGRATION_BUCKET/ENV/SERVICE/reverse/DB_SCHEMA/severe/
    

    다음을 바꿉니다.

    • MIGRATION_BUCKET: Cloud Storage 버킷의 이름입니다.
    • ENV: 배포 환경 이름 (예: prod)입니다.
    • SERVICE: 애플리케이션 또는 서비스 이름입니다.
    • DB_SCHEMA: 데이터베이스 스키마 이름입니다.
  3. DLQ 디렉터리가 완전히 비어 있는지 확인합니다.

  4. 오류 파일이 있으면 계속하기 전에 기본 문제를 해결하고 실패한 레코드를 재생합니다. 자세한 내용은 역방향 복제 오류 모니터링 및 해결을 참조하세요.

정방향 CDC 스트리밍 재개

향후 Spanner로의 정방향 마이그레이션을 재개할 계획이라면 정방향 Datastream 스트림을 재개합니다.

  1. 콘솔 Google Cloud 에서 스트림 의 스트림 세부정보 페이지로 이동합니다.
  2. 재개를 클릭하고 스트림 상태가 RUNNING으로 변경될 때까지 기다립니다. 자세한 내용은 MySQL 데이터 마이그레이션을 참조하세요.

또는 gcloud CLI CLI를 사용하여 스트림을 재개하려면 gcloud datastream streams resume 명령어를 실행합니다.

gcloud datastream streams resume STREAM_ID \
    --location=LOCATION

다음을 바꿉니다.

  • STREAM_ID: Datastream 스트림의 ID입니다.
  • LOCATION: 스트림이 있는 Google Cloud 리전입니다.

MySQL로 쓰기 재전송

  1. 소스 MySQL 기본 데이터베이스 인스턴스를 타겟팅하도록 애플리케이션 구성 및 데이터베이스 연결 문자열을 업데이트합니다.
  2. 애플리케이션 서비스를 시작하고 MySQL에 대한 실시간 읽기 및 쓰기 트래픽을 재개합니다.
  3. 애플리케이션 읽기 및 쓰기 작업이 MySQL 데이터베이스에 대해 성공적으로 실행되는지 확인합니다.

다음 단계