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 por usuários com a cláusula DEFINER falharão quando forem 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 consultas a seguir no 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, siga um destes procedimentos:

  • Crie os usuários na instância de réplica de destino do Cloud SQL 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 do job específico.

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