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 pelo usuário com a cláusula DEFINER falham 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, consulte o 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 fonte que inclua esses metadados, faça o seguinte:

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

    1. Para criar um job de migração em rascunho sem iniciá-lo, selecione Criar em vez de Criar e iniciar.

    2. Na instância de destino do Cloud SQL, recrie os usuários da instância de origem do MySQL usando a API Cloud SQL ou o console Google Cloud .

    3. Na lista de jobs de migração ou na página do job específico, inicie o job de migração.

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