はじめに

Cloud SQL の Enterprise Plus エディション が GA されてから1ヵ月ほどが経過しました。
Cloud SQL のエディション変更にあたって、 DMS を利用した Enterprise Plus エディションへの変更ハードルが下がるアップデートがあったので、それの説明記事となります。

Cloud SQL の エディション 変更をより容易に

Enterprise Plus エディションへの変更に伴い、容易にエディション切り替えができないことから、DMS での移行を検討されている人も多いかと思いますが、DMS 実施に関しての朗報です。

DMS のプライベート VPC ピアリング ネットワーク接続を利用して、内部のプライベートIPアドレス同士でレプリケーションし、Enterprise エディションへの移行がよりやりやすくなりました。

https://cloud.google.com/sql/docs/mysql/upgrade-cloud-sql-instance-to-enterprise-plus-vpc-peering

要件や接続条件にもよるかと思いますが、プライベートでのレプリケーションによりセキュリティ的なハードルも下がり、利用帯域の広がりも期待でき(こちら参照)、移行検討にあたっては恩恵が受けられそうです。

なお、移行にあたっては、こちらを参照したところソース DB への負荷は状況に応じて検討する必要がありそうです。

DMS の移行ジョブの作成手順

※なお、DMS を行うに当たっての前提条件である、API の有効化、レプリケーションするにあたっての DB の事前準備は済ませている前提での記載となります。

それでは移行ジョブ作成手順について見ていきます。

事前の既存 Cloud SQL 情報の確認

NW情報の確認

今回のアップデートの範囲も含めて、移行ジョブを利用するにあたっての必要な情報を確認します。
DMS にて 移行元情報を定義するにあたって Cloud SQL の以下情報をメモします。

  • プライベート IP アドレス
  • 関連付けられたネットワーキング

確認手順としては、Cloud SQL を開き、対象インスタンスをクリックし、概要、を開きます。
右ペインに表示される「このインスタンスとの接続」にて確認できます。

その他情報の確認

上記は今回のアップデートに伴い必要な情報ですが、接続プロファイル作成にあたって、以下の情報も必要になるため、事前にひかえてください。

  • 接続ポート
  • Cloud SQL へ接続するユーザ名
  • Cloud SQL へ接続するユーザ名のパスワード
  • リージョン
  • 接続に利用する暗号化タイプ

移行ジョブ作成

接続プロファイル作成

DMS のメニューから接続プロファイル作成画面へ遷移します。
その画面内で情報を入力します。

  • 補足
    • 接続プロファイルの名前
      • これの名前は DMS で利用するのみです
    • ホスト名または IP アドレス
      • ここは事前に確認した IP アドレスを入力します

ここでホスト名また IP アドレス箇所に、事前に確認した IP アドレス情報を入力します。
また、その他も確認したものを入力します。

移行ジョブの作成

以下に従い移行ジョブの作成を行います。

1.開始

以下「1回限り」を選択しておりますが、ドキュメントに従い、「継続」を選択します。継続的な移行、1回限りの移行の詳細はこちらをご覧ください。
※なお、VPC ピアリング経由では「1回限り」でも、「継続」でもどちらでも可能です。

2.ソースの定義
「ソース接続プロファイルの選択」にて事前に定義したプロファイルを利用します。
データダンプの構成のカスタマイズを必要に応じて行います。

3.移行先の作成
宛先インスタンスIDなど移行先のインスタンス情報を定義します。
目的である以下3点を選択します。

  • Enterprise Plus
  • プライベートIP
  • 事前にメモした VPC

4.接続方法の定義
以下2点を選択します。

  • 移行元と移行先はプライベート IP を使用しています
  • 事前にメモしたVPC

選択後、先に進めるまで時間がかかりますが、これの1つ前の工程で移行先の Cloud SQL のインスタンスを定義し、そのインスタンス作成に時間を要しているため、それが終わるまで先に進めることができません
※もちろんこれは空のものを作成するだけで、移行は行われず、これ以降のステップで行われます

5.移行ジョブのテストと作成
移行ジョブのテストを実施し、移行ジョブが動作することを確認できます。
※おそらく、接続確認やレプリケーションのチェックをしているものと思われます
「ジョブを作成して開始」を選択し、ジョブを実行します。
実行準備ができていない場合、ジョブの作成までとします。
※なお、この時点で移行先の Cloud SQL は作成されてしまうので、そのタイミングからそのインスタンス分の課金が始まってしまうので、注意が必要です

移行中のCloud SQL の表示や確認

継続を選択した場合、移行中は Cloud SQL側は以下のようになっており、レプリカとして移行先が表示されます。
この時点で対象インスタンスをクリックし、Enterprise Plus であること、可用性構成などが希望どおりになっていることを確認したほうが良いです。
※検証で試したときに高可用性になっておらず、あれ?と思ってしまいました

DMS 側のモニタリング状況を確認し、レプリケーションの遅延が無くなるまで実行させたほうが良いようです。
ちなみに、このときのステータスは「実行中<改行>CDCの処理中」となります

移行先の Cloud SQL に接続し、内容を確認することも可能なので、接続しテーブル内容等の確認を行うことが可能です。
公式ドキュメントでも情報確認について記載されていました。
https://cloud.google.com/sql/docs/mysql/upgrade-cloud-sql-instance-to-enterprise-plus-vpc-peering#verify-migration-job

移行ジョブを終わらせる

移行元で書き込みをすべて停止し、レプリケーションの遅延が最小限であることを確認します。
このときは実行中だと思われるので、ジョブは「実行中<改行>CDCの処理中」のステータスとなります
※上記した内容です。

移行ジョブ側でプロモート

プロモートするとダイアログが表示されますので、PROMOTEを選択します。

プロモートが終わるとステータスが完了になります。

Cloud SQL 側の表示

Cloud SQL 側はレプリカだったものが昇格し、インスタンス単体で表示され、元のプライマリのインスタンスが残ります(画面上切れてしまいましたが、3行目にわずかにうつっているものがそれですので、不要であれば削除します)

これで新たな Cloud SQL を利用する準備ができました、、、
と公式ドキュメント上は記載されていましたが、以下に気づいた補足事項記載します。

補足

  • Cloud SQL のあくまでも DB の移行であるためなのか、ユーザ情報は同期されないため、root以外に新たなユーザを作成している場合、ユーザの作成が必要です(こちらにも記載あり)。
  • 権限等は引き継がれていると思われ、同じユーザ追加するだけで、私が仮で作成したWPの利用には影響ありませんでした。
  • Cloud SQL のクエリインサイトは無効になっていたので、有効にする必要がありそうです。
  • たまたま気づいたのがクエリインサイトだったのですが、もしかしたらメンテナンスウインドウなど、細かく移行元と同様になるよう修正する箇所があるかもしれません

所感

今回のアップデートタイミングがたまたま移行検証中だったので、それらのおさらいも含めて今回記載しました。
データベースの移行ということでハードルが高いものと感じていましたが、同じDBエンジンでエディションの変更のみということもあり、恐れていたほど難しいものではありませんでした。
私はインフラ担当ですので細かいアプリケーションの調整事項は状況に応じて担当者との調整が必要かとは思いますが、DMS を利用した移行と VPC 内でプライベートでのレプリケーションで、Enterprise から Enterprise Plus へのエディション移行について加速し、今回のアップデートが移行にあたってのハードルが下がるものになればと思います。
ちなみにCloud SQL のEnterprise Plus でフェイルオーバーを行ったら、20秒くらいでした!!早い!!!