다음을 통해 공유


Azure Database for MySQL로의 마이그레이션과 관련된 알려진 문제

Azure Database for MySQL로의 마이그레이션과 관련된 알려진 문제는 다음 섹션에서 설명합니다.

v8.0 MySQL 유연한 서버 대상에 대한 스키마 마이그레이션 문제

  • 오류: InnoDB 테이블에 대해 보이지 않는 기본 키를 생성하는 기능이 사용하도록 설정된 경우 엔진 버전 8.0.30 이상이 있는 MySQL 유연한 서버로 마이그레이션하지 못할 수 있습니다(MySQL :: MySQL 8.0 참조 설명서:: 13.1.20.11 보이지 않는 생성된 기본 키 참조). 테이블 스키마를 원본에서 대상으로 마이그레이션하거나, 온라인 마이그레이션의 복제 단계에서 변경 내용을 적용하거나, 마이그레이션을 다시 시도하거나, 스키마가 수동으로 마이그레이션된 대상으로 마이그레이션할 때 오류가 발생할 수 있습니다.

    잠재적 오류 메시지:

    • "알 수 없는 오류."
    • "보이지 않는 기본 키를 생성하지 못했습니다. 자동 증분 열이 이미 있습니다."
    • "데이터베이스 'database'의 대상 테이블 '테이블 이름'에 있는 'my_row_id' 열이 원본 테이블에 없습니다."

    제한 사항: sql_generate_invisible_primary_key가 활성화된 MySQL 유연한 서버 인스턴스로의 마이그레이션은 DMS에서 지원되지 않습니다.

    해결 방법: 대상 MySQL 유연한 서버에 대한 서버 매개 변수 sql_generate_invisible_primary_key를 꺼짐으로 설정합니다. 서버 매개 변수는 대상 MySQL 유연한 서버의 전체 탭 아래의 서버 매개 변수 창에서 찾을 수 있습니다. 또한 일치하지 않는 스키마가 없도록 대상 데이터베이스를 삭제하고 DMS 마이그레이션을 통해 시작합니다.

호환되지 않는 SQL 모드

하나 이상의 호환되지 않는 SQL 모드로 인해 여러 오류가 발생할 수 있습니다. 다음은 이 오류가 발생하는 경우 확인해야 하는 서버 모드에서 나타나는 예제 오류입니다.

  • 오류: '{activity}' 활동 중에 마이그레이션을 위해 서버 '{server}'의 데이터베이스 '{database}'에서 테이블 '{table}'을(를) 준비하는 동안 오류가 발생했습니다. 따라서 이 테이블은 마이그레이션되지 않습니다.

    제한 사항: 이 오류는 다음 SQL 모드 중 하나가 한 서버에는 설정되어 있지만 다른 서버에는 설정되어 있지 않은 경우에 발생합니다.

    해결 방법:

    • NO_ZERO_DATE

      원본에서 테이블 또는 데이터의 날짜 기본값이 0000-00-00이고 대상 서버에 NO_ZERO_DATE SQL 모드가 설정되어 있는 경우 스키마 및/또는 데이터 마이그레이션이 실패합니다. 해결 방법으로는 두 가지가 있습니다. 첫 번째는 열의 기본값을 NULL 또는 유효한 날짜로 변경하는 것입니다. 두 번째 옵션은 전역 SQL 모드 변수에서 NO_ZERO_DATE SQL 모드를 제거하는 것입니다.

    • NO_AUTO_CREATE_USER

      루틴의 스키마 마이그레이션을 수행하는 MySQL 원본 서버 5.7에서 MySQL 대상 서버 8.0으로 마이그레이션을 실행하는 경우 no_auto_create_user SQL 모드가 MySQL 원본 서버 5.7에서 설정되어 있으면 오류가 발생합니다.

Binlog 보존 문제

  • 오류: binlog를 읽는 동안 심각한 오류가 발생했습니다. 이 오류는 binlog 파일 이름 및/또는 초기 위치가 잘못 지정되었음을 의미할 수 있습니다.

    제한 사항: 이 오류는 binlog 보존 기간이 너무 짧으면 발생합니다.

    해결 방법: 이 경우 구성할 수 있는 여러 변수가 있습니다. 변수 binlog_expire_logs_seconds는 보존 기간을 결정하며 binlog_expire_logs_auto_purge를 해제하여 binlog 삭제를 방지할 수 있습니다. MySQL 5.7에는 시스템 변수 expire_logs_days(더 이상 사용되지 않음)가 있습니다.

테이블 잠금 확보 제한 시간

  • 오류: 일관된 뷰 생성을 위해 '{server}' 서버에서 읽기 잠금을 가져오는 동안 예외가 발생했습니다.

    제한 사항: 이 오류는 트랜잭션 일관성 검사가 활성화된 경우 모든 테이블에 대한 잠금을 가져오는 동안 시간이 초과되는 경우에 발생합니다.

    해결 방법: 선택한 테이블이 잠겨 있지 않거나 장기 실행 트랜잭션이 실행되고 있지 않은지 확인합니다.

Azure Storage에 4MB를 초과하는 데이터 쓰기

  • 오류: 요청 본문이 너무 커서 허용되는 최대 제한을 초과합니다.

    제한 사항: 이 오류는 테이블이 너무 많아(>10k) 마이그레이션할 수 없을 때 발생할 수 있습니다. Azure Storage 서비스를 호출할 때마다 4MB 한도가 적용됩니다.

    해결 방법: 지원 요청을 만들어 지원 서비스에 문의하시면 REST API에 직접 액세스하는 사용자 지정 스크립트를 제공해드릴 수 있습니다.

중복 키 항목 문제

  • 오류: 오류는 시간 제한, 네트워크 문제 또는 대상 크기 조정으로 인한 증상인 경우가 많습니다.

    잠재적 오류 메시지: 대상 서버에서 발생한 SQL 오류로 인해 일괄 처리를 테이블 '{table}'에 쓸 수 없습니다. 컨텍스트의 경우 배치에 다음 원본 쿼리에서 반환된 행의 하위 집합이 포함되어 있습니다.

    제한 사항: 이 오류는 대상에 대한 시간 제한 또는 끊어진 연결로 인해 발생하는 중복된 기본 키 때문일 수 있습니다. 대상으로 여러 마이그레이션이 동시에 실행되거나 마이그레이션이 실행되는 동안 대상에서 테스트 워크로드를 실행하는 경우와도 관련이 있을 수 있습니다. 또한 원본에서 기본 키가 필요하지 않더라도 대상에 고유한 기본 키가 필요할 수 있습니다.

    해결 방법: 이 문제를 해결하려면 중복 마이그레이션이 실행되지 않고 원본 기본 키가 고유해야 합니다. 오류가 계속되면 지원 요청을 만들어 지원 서비스에 문의하고, REST API에 직접 액세스하는 사용자 지정 스크립트를 제공할 수 있습니다.

복제된 작업에서 일치하지 않는 행 오류가 발생함

  • 오류: 온라인 마이그레이션에서 예상된 변경 횟수를 복제하지 못합니다.

    잠재적 오류 메시지: 원본 서버의 이진 로그에서 읽은 대상 서버에 레코드를 적용하는 동안 오류가 발생했습니다. 변경 내용은 이진 로그 '{mysql-bin.log}' 및 위치 '{position}'에서 시작되었으며 이진 로그 '{mysql-bin.log}' 및 위치 '{position}'에서 종료되었습니다. 이진 로그 '{mysql-bin.log}'에서 '{position}' 위치 앞에 있는 원본 서버의 모든 레코드가 대상에 커밋됩니다.

    제한 사항: 원본에서 테이블에 삽입 및 삭제 문이 있었고 삭제는 명백한 고유 인덱스에 의한 것이었습니다.

    해결 방법: 테이블을 수동으로 마이그레이션하는 것이 좋습니다.

잘린 테이블 데이터 오류

  • 오류: 열거형 열의 하나 이상의 행에 null 값이 있으며 대상 SQL 모드가 strict로 설정됩니다.

    잠재적 오류 메시지: 데이터 잘림 오류로 인해 일괄 처리를 테이블 '{table}'에 쓸 수 없습니다. 데이터가 MySQL 테이블 열의 데이터 형식에 비해 너무 크지 않은지 확인하세요. 열 유형이 열거형인 경우 SQL 모드가 TRADITIONAL, STRICT_TRANS_TABLES 또는 STRICT_ALL_TABLES로 설정되어 있지 않고 원본과 대상에서 동일한지 확인합니다.

    제한 사항: 이 오류는 특정 설정이 있을 때 기록 데이터가 원본 서버에 기록되었지만 설정이 변경되면 데이터를 이동할 수 없는 경우에 발생합니다.

    해결 방법: 이 문제를 해결하려면 대상 SQL 모드를 non-strict로 변경하거나 모든 null 값을 유효한 값으로 변경하는 것이 좋습니다.

개체 생성 실패

  • 오류: 보기 유효성 검사에 실패한 후 오류가 발생했습니다.

    제한 사항: 이 오류는 보기를 마이그레이션하려고 할 때 보기에서 참조해야 하는 테이블을 찾을 수 없는 경우에 발생합니다.

    해결 방법: 보기를 수동으로 마이그레이션하는 것이 좋습니다.

테이블을 찾을 수 없음

  • 오류: 참조 테이블을 찾을 수 없어서 오류가 발생했습니다.

    잠재적 오류 메시지: 쿼리 실행으로 인해 파이프라인이 전략 MySqlSchemaMigrationViewUsingTableStrategy를 사용하여 '{activity}' 작업에 대한 개체 '{object}'의 스키마를 만들 수 없습니다.

    제한 사항: 이 오류는 보기가 삭제되거나 이름이 바뀐 테이블을 참조하는 경우 또는 올바르지 않거나 불완전한 정보로 보기가 만들어진 경우에 발생할 수 있습니다. 테이블의 하위 집합이 마이그레이션되지만 해당 종속된 테이블은 마이그레이션되지 않은 경우 이 오류가 발생할 수 있습니다.

    해결 방법: 보기를 수동으로 마이그레이션하는 것이 좋습니다. 외래 키 및 CREATE VIEW 문에서 참조되는 모든 테이블이 마이그레이션을 위해 선택되었는지 확인합니다.

풀링된 모든 연결이 끊어짐

  • 오류: 원본 서버의 모든 연결이 끊어졌습니다.

    제한 사항: 이 오류는 서버 다시 시작, 네트워크 문제, 원본 서버의 과도한 트래픽 또는 기타 일시적인 문제로 인해 초기 로드를 시작할 때 설정된 모든 연결이 끊어지는 경우에 발생합니다. 이 오류는 복구할 수 없습니다. 또한 이 오류는 유지 관리 기간에 서버를 마이그레이션하려는 시도가 수행되는 경우에도 발생합니다.

    해결 방법: 마이그레이션을 다시 시작해야 하며 원본 서버의 성능을 높이는 것이 좋습니다. 또 다른 문제는 장기 실행 연결을 종료시키고 이러한 스크립트가 작동하지 않도록 하는 스크립트입니다.

일관된 스냅샷 손상됨

제한 사항: 고객이 마이그레이션 인스턴스를 처음 로드하는 동안 DDL을 수행할 때 오류가 발생합니다.

해결 방법: 이 문제를 해결하려면 초기 로드 중에 DDL을 변경하지 않는 것이 좋습니다.

외래 키 제약 조건

  • 오류: 테이블에서 참조된 외래 키 형식이 변경될 때 오류가 발생합니다.

    잠재적 오류 메시지: 외래 키 제약 조건 '{key}'에서 열 '{pk 열 1}' 및 참조된 열 '{fk 열 1}'을 참조하는 것은 호환되지 않습니다.

    제한 사항: 이 오류로 인해 테이블 1의 PK 열이 테이블 2의 FK 열과 호환되지 않을 수 있으므로 테이블의 스키마 마이그레이션이 실패할 수 있습니다.

    해결 방법: 이 문제를 해결하려면 마이그레이션 프로세스가 완료된 후 외래 키를 삭제하고 다시 만드는 것이 좋습니다.