SQL Server 문제 진단

오류 문제 해결하기

런타임 중에 이전 작업 프로세스에 오류가 발생할 수 있습니다.

  • 일부 오류의 경우 Database Migration Service는 마이그레이션 프로세스를 계속하고 중단을 방지하기 위해 잘못된 작업을 자동으로 다시 시도합니다. 마이그레이션 작업 상태가 오류가 있는 실행 중으로 변경됩니다. 이 상태는 Database Migration Service가 오류의 영향을 받지 않고 데이터를 계속 마이그레이션하고 있음을 나타냅니다.
  • 일부 오류는 복구할 수 없습니다. 복구할 수 없는 오류가 Database Migration Service에 발생하면 이전 작업 상태가 실패로 변경됩니다. 이러한 시나리오에서는 문제가 해결된 후 마이그레이션 작업을 다시 시작해야 합니다.

오류를 해결하려면 영향을 받는 이전 작업으로 이동하여 오류를 확인하고 오류 메시지에 설명된 단계를 따르세요. Cloud SQL 대상 인스턴스의 Cloud Monitoring 로그를 확인하여 자세한 내용을 확인할 수도 있습니다. 이전 작업 세부정보 페이지에서 Cloud Monitoring 링크를 사용합니다.

다음 표에서 문제의 예와 해결 방법을 확인할 수 있습니다.

문제 설명 문제 원인 해결 방법
오류 메시지: The BAK file's database major version number {backup_version_num} must not be higher than the current database major version number {your Cloud SQL for SQL Server version number}. SQL Server용 Cloud SQL 대상 인스턴스에서 사용하는 버전보다 상위 버전의 SQL Server에서 백업 파일을 가져오려고 합니다.

Database Migration Service는 교차 버전 호환성 가이드라인을 충족하는 경우에만 하위 버전에서 상위 버전으로의 교차 버전 마이그레이션을 지원합니다. 지원되는 소스 및 대상 데이터베이스를 참고하세요.

이후 버전의 SQL Server를 사용하도록 SQL Server용 Cloud SQL 대상 인스턴스를 다시 만들고 새 인스턴스로 이전 프로세스를 다시 시도합니다.
오류 메시지: The following database already exists in destination: {database_name} Cloud SQL 대상 인스턴스에 이미 마이그레이션 작업에 포함된 데이터베이스 중 하나와 동일한 이름을 사용하는 데이터베이스가 있습니다. 이름 충돌을 삭제합니다. 오류: 대상에 데이터베이스가 이미 있음 을 참고하세요.
오류 메시지: Permission denied for {cloudsql.databases.get} on the Database Migration Service service account. Database Migration Service 서비스 계정에 권한이 없습니다. 데이터베이스 이전 서비스 서비스 계정에 누락된 권한을 추가합니다. IAM으로 액세스 제어를 참고하세요.
오류 메시지: Missing WAL file at Log Sequence Number (LSN) {log_number_here} 트랜잭션 로그 파일에서 포함된 업데이트 순서와 관련하여 잘못된 epoch 타임스탬프를 사용하고 있을 수 있습니다. Database Migration Service는 로그 시퀀스 번호와 에포크 타임스탬프를 사용하여 트랜잭션 로그 파일이 Cloud SQL 대상 인스턴스에 복제되는 순서를 제어합니다. 최신 트랜잭션 로그 파일의 파일 이름에 사용된 epoch 타임스탬프를 확인하고 조정합니다. 오류가 있는 트랜잭션 로그 이름 조정을 참고하세요.
선택한 데이터베이스를 마이그레이션했는데 마이그레이션 작업에서 하나 이상의 데이터베이스에 데이터를 복제할 수 없는 경우 데이터베이스 목록에 실패 상태가 표시됩니다. 다양한 마이그레이션 작업 오류

오류 열에서 오류 보기를 클릭하고 오류를 수정합니다. 오류를 수정한 후 Restart를 클릭합니다.

오류: 대상에 데이터베이스가 이미 있음

다음과 같은 오류 메시지가 표시됩니다. The following database already exists in destination: {database_name}

문제 원인

Cloud SQL 대상 인스턴스에 이미 마이그레이션 작업에 포함된 데이터베이스 중 하나와 동일한 이름을 사용하는 데이터베이스가 있습니다.

해결 방법

이전 시나리오에 따라 중복 데이터베이스 문제를 해결하는 방법은 여러 가지가 있습니다. 다음 작업 중 하나를 시도해 보세요.

소스 Cloud Storage 버킷의 이름을 바꿔 다른 이름으로 데이터베이스를 이전합니다.

Database Migration Service가 대상 Cloud SQL 인스턴스에 만드는 데이터베이스 이름은 백업 파일을 저장하는 Cloud Storage의 폴더 이름에서 파생됩니다. 이름을 공유하고 Cloud SQL 대상에 둘 다 필요한 두 개의 서로 다른 데이터베이스가 있는 경우 폴더 이름을 바꾸고 이전 작업을 다시 만들어 이름 충돌을 방지할 수 있습니다.

다음 단계를 수행합니다.

  1. 이름 충돌의 영향을 받는 소스 데이터베이스의 새 폴더를 만듭니다. Cloud Storage 버킷에 백업 파일 저장 을 참고하세요.
  2. 마이그레이션 작업을 다시 만듭니다. 마이그레이션 작업 만들기를 참고하세요.

    기존 마이그레이션 작업에 새 데이터베이스를 추가할 수 있지만 마이그레이션 작업에서 데이터베이스를 삭제할 수는 없습니다. 따라서 전체 마이그레이션 작업을 다시 만들어야 합니다.

SQL Server용 Cloud SQL 인스턴스에서 중복 데이터베이스를 삭제합니다.

Cloud SQL 대상 인스턴스의 데이터베이스가 중복된 경우 인스턴스에서 데이터베이스를 삭제하고 마이그레이션 작업을 계속할 수 있습니다. SQL Server용 Cloud SQL 문서의 데이터베이스 삭제를 참고하세요.


순서가 잘못된 WAL 파일의 트랜잭션 로그 파일 이름 조정

문제 원인

트랜잭션 로그 파일에서 포함된 업데이트 순서와 관련하여 잘못된 epoch 타임스탬프를 사용하고 있을 수 있습니다. Database Migration Service는 로그 시퀀스 번호와 에포크 타임스탬프를 사용하여 트랜잭션 로그 파일이 Cloud SQL 대상 인스턴스에 복제되는 순서를 제어합니다.

해결 방법

파일 업로드가 지연되거나 순서가 잘못될 수 있습니다. 문제가 해결될 때까지 몇 분 정도 기다리거나 Cloud Storage 버킷에 누락된 파일이 있는지 확인합니다.

문제가 해결되지 않으면 거래 로그 파일 이름의 에포크 타임스탬프를 확인하고 조정합니다.

다음 단계를 수행합니다.

  1. 대상 SQL Server용 Cloud SQL 인스턴스에서 트랜잭션 로그 가져오기 작업 목록을 확인합니다. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 모든 작업 보기 > SQL Server 오류 로그 보기를 클릭합니다.
  3. 거래 로그 파일의 모든 가져오기 작업을 확인하고 파일 이름에 올바른 에포크 타임스탬프가 포함되어 있는지 확인합니다.
  4. 최근 트랜잭션 로그 파일에서 순서가 잘못된 epoch 타임스탬프가 포함된 이름을 사용하는 경우 Cloud Storage 버킷으로 이동하여 파일 이름을 바꿉니다. Database Migration Service는 변경사항을 자동으로 감지하고 관련 트랜잭션 로그 파일을 가져오려고 시도합니다.
  5. Amazon RDS만 해당: S3로 내보내는 과정에서 일부 트랜잭션 로그 파일이 누락되었을 수 있습니다. 누락된 WAL 파일 주변 기간에 대한 트랜잭션 로그 내보내기 함수를 다시 실행해 보세요.