ギャップをなくす: Database Migration Service を使用して、漏れのない移行を行う
Google Cloud Japan Team
※この投稿は米国時間 2020 年 11 月 24 日に、Google Cloud blog に投稿されたものの抄訳です。
Database Migration Service(DMS)は、MySQL(プレビュー版)および PostgreSQL(希望者にプレビュー版を提供)のワークロードを Cloud SQL に移行するサービスで、ダウンタイムを最小に抑えながらこれらのワークロードを忠実に移行するために役立ちます。DMS はサーバーレスのため、移行のためのリソースをプロビジョニング、管理、モニタリングする必要がありません。
この記事では、MySQL のデータベース移行の対象となるものとならないものを区別しながら、DMS を使って移行を漏れなく行うための手順を説明します。移行元データベースのデータ、スキーマ、その他のデータベース機能(トリガーやストアド プロシージャなど)は、高い信頼性を保ち、大規模かつ自動的に移行先の Cloud SQL データベースに複製されます。ただし、MySQL の構造上、移行されないものもあります。では、DMS で移行されるものと移行されないものについて、詳しく見ていきましょう。
MySQL データベース移行の対象
MySQL 向けの DMS では、MySQL データベース独自のネイティブなレプリケーション技術を使用して、データベース オブジェクトを特定のデータベースから他のデータベースに忠実に移行します。移行対象については、ドキュメントの移行の忠実性の節で詳しく説明しています。このプレビュー版のリリースの時点では、データベースの移行時に、以下のデータ、スキーマ、メタデータ コンポーネントがすべて移行されます。
データの移行
すべてのデータベースおよびスキーマのテーブルが移行されますが、次のデフォルトのデータベースとスキーマは対象外となります: sys、mysql、performance_schema、information_schema。
スキーマの移行
命名
主キー
データ型
順序位置
デフォルト値
null 値許容
自動増分属性
セカンダリ インデックス
メタデータの移行
ストアド プロシージャ
関数
トリガー
ビュー
外部キー制約
データベース移行の対象外
MySQL
MySQL データベース移行時に移行対象とならないものや、注意すべき既知の制限および割り当てがあります。
ユーザー定義
MySQL システム データベースとそれに含まれるユーザーおよび権限の情報は、移行の対象外となります。そのため、ユーザー アカウントおよびログイン情報は、移行先の Cloud SQL インスタンスで直接管理する必要があります。
インスタンスを使用する前に、ルート アカウントを設定する必要があります。移行先の Cloud SQL インスタンスにユーザーを追加するには、UI の [ユーザー] タブか、MySQL クライアントを使用します。MySQL ユーザー アカウントの管理方法については、Cloud SQL のドキュメントで詳しく説明しています。
Definer 句の使用
MySQL の移行ジョブでは、ユーザーデータは移行されません。そのため、ユーザーが DEFINER句を使って定義したメタデータを含むソースを新しい Cloud SQL レプリカで呼び出すと、そのユーザーがまだ存在しないため、エラーとなります。
DEFINER 句を含むソースから移行を実行するには、以下の手順に従います。
1.移行ジョブを作成します。ただし、開始はしないでください([Create & Start] ではなく [Create] を選択します)。
2.移行先の新しい Cloud SQL インスタンスに、Cloud SQL API または UI の [ユーザー] タブを使ってユーザーを作成します。
3.移行ジョブリストか、ジョブのページから移行ジョブを開始します。
または、移行ジョブを設定する前に、ソースの DEFINER 句を INVOKER に変更することもできます。メタデータが ’root’@’localhost’ によって作成されている場合、処理エラーが発生しますのでご注意ください。移行ジョブの開始前に、DEFINER を変更してください。
DMS の次のステップ
MySQL または PostgreSQL データベースの Cloud SQL への移行について詳しくは、以下のリソースをご覧ください。
こちらのブログ記事では、DMS のリリースについて発表し、サポート対象の機能の概要を紹介しています。
DMS のドキュメントでは、MySQL データベースを移行するための要件とステップを詳しく説明しています。
こちらでは DMS の接続の構成について詳しく説明しています。
PostgreSQL 向け DMS にご関心がある場合は、こちらのフォームにご記入ください。
-Cloud デベロッパー アドボケイト Jan Kleinert