Criar e executar um job de migração do MySQL que contenha metadados com uma cláusula DEFINER

Visão geral

Um job 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 vão falhar quando invocadas na nova réplica do Cloud SQL porque os usuários ainda não existem.

Para identificar quais valores DEFINER existem nos seus metadados, execute as seguintes consultas no seu banco de dados de origem do MySQL. Verifique os resultados de entradas para root%localhost ou para 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 job de migração de uma origem que inclua esses metadados, faça uma destas ações:

  • 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 job 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 UI do Cloud SQL.

    3. Inicie o job de migração na lista de jobs de migração ou na página específica do job.

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