概要
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 レプリカ インスタンスにユーザーを作成します。
移行ジョブを作成します。ただし、まだ開始しないでください。[Create & Start] ではなく [Create] を選択します。
Cloud SQL API または UI を使用して、移行元 MySQL インスタンスから移行先の Cloud SQL インスタンスにユーザーを作成します。
移行ジョブリストか、ジョブのページから移行ジョブを開始します。
移行ジョブを設定する前に、ソースの MySQL インスタンスで
DEFINER
句をINVOKER
に更新します。