MySQL에서 Spanner로 마이그레이션

이 페이지에서는 온라인 트랜잭션 처리 (OLTP) 데이터베이스를 MySQL에서 Spanner로 마이그레이션하는 방법을 간략하게 설명합니다. Spanner로 마이그레이션하는 프로세스는 데이터 크기, 다운타임 요구사항, 애플리케이션 코드 복잡성, 샤딩 스키마, 커스텀 함수, 장애 조치 및 복제 전략과 같은 요인에 따라 달라질 수 있습니다.

Spanner 마이그레이션은 다음 단계로 구분됩니다.

  1. 마이그레이션을 평가합니다.
  2. 스키마를 마이그레이션하고 모든 SQL 쿼리를 변환합니다.
  3. MySQL 이외에 Spanner를 사용하도록 애플리케이션을 마이그레이션합니다.
  4. 샘플 데이터를 로드하고 실적을 최적화하세요.
  5. 데이터를 이전합니다.
  6. 마이그레이션 검증
  7. 컷오버 및 대체 메커니즘 구성

마이그레이션 평가

소스 MySQL 데이터베이스에서 Spanner로의 마이그레이션을 평가하려면 비즈니스, 기술, 운영, 재무 요구사항을 평가해야 합니다. 자세한 내용은 마이그레이션 평가를 참고하세요.

스키마 마이그레이션

Spanner 마이그레이션 도구를 사용하여 기존 스키마를 Spanner 스키마로 변환합니다.

자세한 내용은 MySQL에서 스키마 마이그레이션 개요를 참고하세요.

Spanner를 사용하도록 애플리케이션 마이그레이션

Spanner는 다양한 언어에 대한 클라이언트 라이브러리 집합과 함께 Cloud Spanner 관련 API 호출, SQL 쿼리, DML(Data Modification Language) 문을 사용하여 데이터를 읽고 쓸 수 있는 기능을 제공합니다. SQL 문을 변환할 필요가 없으므로, 키로 행 직접 읽기와 같은 일부 쿼리에 대해서는 API 호출을 사용하는 것이 더 빠를 수 있습니다.

Spanner는 Java 애플리케이션을 위한 JDBC 드라이버를 제공합니다.

이전 프로세스의 일부로 앞에서 언급한 Spanner에서 사용할 수 없는 기능을 애플리케이션에 구현해야 합니다. 예를 들어 데이터 값을 확인하고 관련 테이블을 업데이트하는 트리거는 애플리케이션에서 읽기 또는 쓰기 트랜잭션을 사용하여 기존 행을 읽고 제약조건을 확인한 후 두 테이블에 업데이트된 행을 쓰도록 구현되어야 합니다.

Spanner는 읽기/쓰기 및 읽기 전용 트랜잭션을 제공하여 데이터의 외부 일관성을 보장합니다. 또한 읽기 트랜잭션에 타임스탬프 경계를 적용할 수 있어 다음 중 하나에서 일관된 버전의 데이터를 읽을 수 있습니다.

  • 과거의 정확한 시점(최대 1시간 전)
  • 미래(해당 시간에 도달할 때까지 읽기가 차단됨)
  • 허용된 양의 제한된 비활성이 지난 후. 이 시간이 지나면 다른 복제본에서 나중에 데이터를 사용할 수 있는지 확인하지 않고도 과거의 일정 시간까지 일관된 뷰가 반환됩니다. 이 경우 비활성 데이터를 희생시키는 대신 성능상의 이점을 얻을 수 있습니다.

Spanner에 샘플 데이터 로드

전체 데이터 마이그레이션을 수행하기 전에 Spanner에 샘플 데이터를 로드하여 스키마, 쿼리, 애플리케이션을 테스트할 수 있습니다.

BigQuery 역방향 ETL 워크플로와 Google Cloud CLI를 사용하여 CSV 파일 형식의 소량 데이터를 Spanner에 로드할 수 있습니다.

자세한 내용은 샘플 데이터 로드를 참고하세요.

MySQL에서 Spanner로 데이터를 전송하려면 MySQL 데이터베이스를 포터블 파일 형식(예: XML)으로 내보낸 후 Dataflow를 사용하여 Spanner로 해당 데이터를 가져와도 됩니다.

Spanner로 데이터 마이그레이션

Spanner 스키마를 최적화하고 샘플 데이터를 로드한 후 데이터를 빈 프로덕션 규모 Spanner 데이터베이스로 이동할 수 있습니다.

자세한 내용은 MySQL에서 라이브 데이터 마이그레이션을 참고하세요.

데이터 마이그레이션 검증

데이터가 Spanner 데이터베이스로 스트리밍되는 과정에서 Spanner 데이터와 MySQL 데이터를 정기적으로 비교하여 데이터 일관성을 유지할 수 있습니다. 두 데이터 소스 모두 쿼리하고 결과를 비교하여 일관성을 확인할 수 있습니다.

Dataflow에서 조인 변환을 사용하여 대규모 데이터 세트를 자세히 비교할 수 있습니다. 이 변환은 키가 지정된 데이터세트 2개를 취해 키별로 값을 일치시킵니다. 그런 다음 일치된 값이 동일한지 비교할 수 있습니다. 일관성 수준이 비즈니스 요구사항에 부합될 때까지 이러한 확인을 정기적으로 실행할 수 있습니다.

자세한 내용은 데이터 마이그레이션 검증을 참고하세요.

컷오버 및 대체 메커니즘 구성

역방향 복제를 사용하여 MySQL의 전환 및 대체를 설정할 수 있습니다. 컷오버 및 대체는 Spanner에 문제가 발생할 경우 소스 MySQL 데이터베이스로 되돌리는 비상 계획이 있음을 의미합니다.

역방향 복제는 Spanner에 예상치 못한 문제가 발생하여 서비스 중단을 최소화하면서 원래 MySQL 데이터베이스로 대체해야 하는 경우에 유용합니다. 역방향 복제를 사용하면 Spanner에 작성된 데이터를 소스 MySQL 데이터베이스로 다시 복제하여 대체할 수 있습니다.

역방향 복제 흐름에는 Spanner to SourceDB Dataflow 템플릿에서 실행하는 다음 단계가 포함됩니다.

  1. Spanner 변경 내역을 사용하여 Spanner에서 변경사항을 읽습니다.

  2. 전방 마이그레이션된 변경사항을 필터링합니다.

  3. 소스 데이터베이스 스키마와 호환되도록 Spanner 데이터를 변환합니다.

  4. 소스 데이터베이스에 지정된 기본 키의 최신 데이터가 이미 포함되어 있는지 확인합니다.

  5. 데이터를 소스 데이터베이스에 씁니다.

다음 단계