DEFINER 절이 있는 메타데이터가 포함된 MySQL 마이그레이션 작업 만들기 및 실행

개요

MySQL 이전 작업은 사용자 데이터를 이전하지 않습니다. 따라서 사용자가 DEFINER 절로 정의한 메타데이터가 포함된 소스는 새 Cloud SQL 복제본에서 호출될 때 실패합니다. 사용자가 아직 존재하지 않기 때문입니다.

메타데이터에 어느 DEFINER 값이 있는지 식별하려면 MySQL 소스 데이터베이스에서 다음 쿼리를 실행하면 됩니다. 결과에서 root%localhost 항목 또는 대상 인스턴스에 없는 사용자를 확인합니다.

SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA NOT 
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA NOT 
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA NOT 
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA NOT 
IN ('mysql', 'sys');

이러한 메타데이터가 포함된 소스에서 마이그레이션 작업을 실행하려면 다음 중 하나를 수행하면 됩니다.

  • 마이그레이션 작업을 시작하기 전에 대상 Cloud SQL 복제본 인스턴스에서 사용자를 만듭니다.

    1. 마이그레이션 작업을 시작하지 않고 만듭니다. 즉, 만들기 및 시작 대신 만들기를 선택합니다.

    2. Cloud SQL API 또는 UI를 사용하여 소스 MySQL 인스턴스의 사용자를 대상 Cloud SQL 인스턴스에 만듭니다.

    3. 마이그레이션 작업 목록 또는 특정 작업 페이지에서 마이그레이션 작업을 시작합니다.

  • 마이그레이션 작업을 설정하기 전에 소스 MySQL 인스턴스에서 DEFINER 절을 INVOKER로 업데이트합니다.