8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

All About Group(株式会社オールアバウト)Advent Calendar 2022

Day 16

GCP Database Migration Serviceを使用してCloudSQL for MYSQLのバージョンアップをしてみた

Last updated at Posted at 2022-12-15

はじめに

この記事は、All About Group(株式会社オールアバウト) Advent Calendar 2022 16日目の記事です。

こんにちは、@deeenです。
社内でCloudSQL for MYSQLのバージョンを5.7から8.0に移行する際に「Database Migration Service」を使用したので、使用方法、注意点などまとめておきたいと思います。

Database Migration Serviceとは?

サービス名の通り、GCPが提供するフルマネージドのデータベース移行サービスになります。
オンプレミス、Google Cloud、その他クラウドからCloudSQLやAlloyDB for PostgreSQLに移行が可能です。
最小限のダウンタイムで移行ができること、サーバレスで簡単なセットアップで実行可能である点が特徴です。

サービスページ: https://cloud.google.com/database-migration

今回やること

今回は弊社での実例を元に、GCPのCloudSQL for MYSQL5.7から8.0に移行するという内容のご紹介になります。

以下、イメージ図
image.png

手順

それでは、以下順序でDatabase Migration Service(DMS)を使用した移行方法をご説明します。

  1. 移行元DBのクライアント証明書の取得
  2. DMS移行ジョブの作成
  3. ジョブ実行
  4. DBユーザの作成/権限付与
  5. HA構成への変更

1. 移行元DBのクライアント証明書の取得

移行元インスタンスへ移動し、「接続」> 「セキュリティ」を開きます。
画面下部のクライアント証明書を作成ボタンをクリックし、クライアント証明書を作成します。
image.png

以下のような画面が表示されたら、各キーをダウンロードして完了です。
※キーのダウンロードはこの画面でしか実行できませんので、大切に保管してください。
image.png

2. DMS移行ジョブの作成

CloudSQLのサービス画面上部の「データを移行」をクリックするか、
GCPの検索窓からデータベースの移行と入力し、Database Migration Serviceのサービス画面へ移動します。

移行ジョブを作成 ボタンをクリックし、ウィザードに従ってジョブを作成します。
以下にウィザード入力の例を記載しますので参考にしてみてください。

ステップ 項目名 入力パラメータ例 備考
移行ジョブの説明 移行ジョブの名前 dms-test
移行ジョブID dms-test
移行元データベースエンジン CloudSQL for MySQL ただのMySQLではデータ転送されないので注意
移行ジョブの種類 1回限り
ソースの定義 Cloud SQLインスタンス source-db データ転送元になるCloudSQLインスタンス名
接続プロファイルの名前 connection-test 移行元DBへの接続情報をまとめたものが接続プロファイルとなります。移行ジョブとは別リソースとして管理され、同一DBへの移行を別途行う際に使い回すことが可能です。
接続プロファイルID connection-test
ホスト名またはIPアドレス xxx.xxx.xxx.xxx 移行元DBのプライベートIPアドレス
ポート 3306
ユーザー名 root rootでなければDMSは有効に機能しないので注意
パスワード **** rootのパスワード
リージョン DBが存在するリージョン
接続のセキュリティ保護 サーバークライアント
ソースCA証明書 server-ca.pem 1で入手したものを設定する
ソースのクライアント証明書 client-cert.pem 1で入手したものを設定する
ソースの秘密鍵 client-key.pem 1で入手したものを設定する
最初にデータをダンプする場所の選択 初期ダンプを自動生成する
移行先の作成 宛先インスタンスID test-db 移行先CloudSQLインスタンス名
パスワード **** 新規DBのrootパスワード
データベースのバージョン Cloud SQL for MySQL 8.0
リージョンとゾーン 任意
プライベートIP チェック
パブリックIP チェック
マシンタイプ 標準 希望のスペックを記入
ストレージの種類 SSD 希望のスペックを記入
ストレージ容量 100GB 希望のスペックを記入
ストレージの自動拡張を有効にする チェック
顧客管理の暗号鍵(CMEK)を使用する チェックしない オプションの構成を表示をクリックしないと見えないので注意
フラグ character_set_server = utf8mb4 オプションの構成を表示をクリックしないと見えないので注意
フラグ default_time_zone = +09:00 オプションの構成を表示をクリックしないと見えないので注意。また、設定し忘れるとtimestamp型のデータがUTC時間で登録されてしまうので要注意
ラベル なし オプションの構成を表示をクリックしないと見えないので注意
接続方法の定義 接続方法 移行元と移行先はプライベートIPを使用しています
移行元のVPCネットワークの選択 test-network

一通りの入力が完了したら、移行ジョブのテストを必ず実施しましょう。
以下のようにテストが成功したら、ジョブを作成 をクリックし、2のステップは完了です。
image.png

3. ジョブの実行

移行ジョブのサービス画面に移動し、2で作成した移行ジョブを開始します。
正常に実行が開始されるとステータス「実行中 完全なダンプの処理中」に遷移し、最終的にステータス「完了」になります。

以下、開始直後の図
image.png

完了
image.png

4. DBユーザの作成、権限付与

DMSではDBユーザ情報は移行対象でないため、手動での作成と対象DBへの権限付与が必要となります。
以下、コマンド例

mysql -u root -h xxx.xxx.xxx.xxx -P 3306 -p
create user 'test_db_user'@'%' identified by 'xxxxxx';
GRANT ALL PRIVILEGES ON `test_db`.* TO 'test_db_user'@'%' ;
show grants for 'test_db_user'@'%';

5. HA構成への変更 (オプション)

移行ジョブ実行前は、移行先インスタンスはシングルゾーン構成となっておりかつ、変更不可になっています。
本番環境等では、移行ジョブ完了後に忘れずにHA構成に変更しておきます。

終わりに

ウィザードベースで複雑な設定も不要、移行元のインスタンスに負荷をかけることなく移行できるのは大変ありがたい機能ですね。
CloudSQLのバージョンアップ方法にお悩みの方はぜひ本記事を参考に挑戦してみてください。
また、本記事では紹介しきれませんでしたが、オンプレや他クラウドからGCPへのデータベース移行もほぼ同じ要領で可能でありますので、GCP未使用の方、これからGCPへ移行したいという方にとっても非常に有用な機能だと思います。

今後も業務の中で触った新しいサービスや、学習した内容を共有していきたいと思います。

最後までお読みいただきありがとうございました。

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?