Crie e execute uma tarefa de migração do MySQL que contenha metadados com uma cláusula DEFINER

Vista geral

Uma tarefa de migração do MySQL não migra os dados do utilizador. Por conseguinte, as origens que contêm metadados definidos por utilizadores com a cláusula DEFINER falham quando invocadas na nova réplica do Cloud SQL, porque os utilizadores ainda não existem aí.

Para identificar que valores DEFINER existem nos seus metadados, pode executar as seguintes consultas na sua base de dados de origem do MySQL. Verifique os resultados das entradas para root%localhost ou para utilizadores 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 uma tarefa de migração a partir de uma origem que inclua esses metadados, pode fazer uma das seguintes ações:

  • Crie os utilizadores na instância de réplica do Cloud SQL de destino antes de iniciar a tarefa de migração.

    1. Crie uma tarefa de migração sem a iniciar. Ou seja, escolha Criar em vez de Criar e iniciar.

    2. Crie os utilizadores da sua instância MySQL de origem na instância do Cloud SQL de destino através da API ou da IU do Cloud SQL.

    3. Inicie a tarefa de migração a partir da lista de tarefas de migração ou da página da tarefa específica.

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