概览
MySQL 迁移作业不会迁移用户数据。因此,包含用户用 DEFINER
子句定义的元数据的源在新的 Cloud SQL 副本上调用时将会失败,因为那里尚不存在用户。
如需确定元数据中存在哪些 DEFINER
值,您可以在 MySQL 源数据库上运行以下查询。检查 root%localhost
或目标实例中不存在的用户的条目结果:
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');
如需从包含此元数据的源运行迁移作业,您可以执行以下操作之一:
在开始迁移作业之前,请在目标 Cloud SQL 副本实例上创建用户。
创建迁移作业,但不启动它。也就是说,选择创建,而不是创建并启动。
使用 Cloud SQL API 或界面,在目标 Cloud SQL 实例上创建源 MySQL 实例中的用户。
从迁移作业列表或特定作业的页面启动迁移作业。
在设置迁移作业之前,将源 MySQL 实例中的
DEFINER
子句更新为INVOKER
。