Crie e execute um trabalho de migração MySQL contendo metadados com uma cláusula DEFINER

Visão geral

Um trabalho de migração do MySQL não migra dados do usuário . Portanto, as fontes que contêm metadados definidos pelos usuários com a cláusula DEFINER falharão quando invocadas na nova réplica do Cloud SQL, porque os usuários ainda não existem lá.

Para identificar quais valores DEFINER existem em seus metadados, você pode executar as seguintes consultas em seu banco de dados de origem MySQL. Verifique os resultados das entradas de root%localhost ou de usuários que não existem na instância de destino:

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');

Para executar um trabalho de migração de uma origem que inclui esses metadados, você pode fazer o seguinte:

  • Crie os usuários na instância de réplica do Cloud SQL de destino antes de iniciar o job de migração.

    1. Crie um trabalho de migração sem iniciá-lo. Ou seja, escolha Criar em vez de Criar e Iniciar .

    2. Crie os usuários da instância de origem do MySQL na instância de destino do Cloud SQL usando a API ou IU do Cloud SQL.

    3. Inicie o trabalho de migração na lista de trabalhos de migração ou na página do trabalho específico.

  • Atualize a cláusula DEFINER para INVOKER na sua instância MySQL de origem antes de configurar seu trabalho de migração.