Google CloudSQLは、MySQLとPostgreSQLをサポートするデータベースのマネージドサービスです。 CloudSQLは、自動フェイルオーバーによる複数のゾーン間でのデータレプリケーションなど、他のGoogleCloudPlatformサービスの一部と統合できます。この記事では、Database Migration Service(DMS)を使用してMySQLデータベースインスタンスをGoogleCloudSQLからAWSRDSに移行する方法について説明します。この記事には次のセクションがあります:
- 環境の設定
- MySQLRDSDBインスタンスの作成
- RDS上のMySQLデータベースへの接続
- GoogleCloudPlatformプロジェクトの作成
- CloudSQLインスタンスの作成
- CloudSQLDBインスタンスIPアドレスのルートをVPCルートテーブルに追加する
- DMSレプリケーションインスタンスの作成
- CloudSQLDBインスタンスへのレプリケーションインスタンス接続用のネットワークの追加
- データベースレプリケーションエンドポイントの作成
- レプリケーションタスクの作成
- レプリケーションタスクの実行
- 移行されたテーブルの探索
- CloudWatchログの探索
- 移行の削除
- DBインスタンスの削除
- 結論
環境の設定
GoogleCloudPlatformの課金アカウントが必要です。 GoogleCloudPlatformの無料利用枠アカウントは最初の1年間の無料トライアルを提供します。 AWSアカウントも必要です。これはhttps://aws.amazon.com/resources/create-account/で作成できます。
MySQLRDSDBインスタンスの作成
MySQLデータベースをCloudSQLからAWSRDSに移行するため、RDS上にMySQLデータベースインスタンスを作成する必要があります。 https://aws.amazon.com/rdsでRDSに移動し、図1に示すように、RDSウィザードでエンジンをMySQLとして選択します。
図1: MySQLデータベースエンジンの選択
本番環境では? 、開発/テストを選択します 、図2に示すように。
図2: 開発とテストの選択
DBの詳細を指定で 、チェックボックスを選択しますRDS無料利用枠の対象となるオプションのみを表示 、図3に示すように、general-public-licenseとしてLicenseModelを選択します。 DBエンジンバージョンをMySQL5.6.35として選択します。 MySQLバージョン5.5、5.6、および5.7は、DMSターゲットでサポートされています。 DBインスタンスクラスをdb.t2.microとして選択します。これは、1vCPUと1GBRAMの容量があります。 [いいえ]として[Multi-AZDeployment]を選択します。[GeneralPurpose(SSD)]として[Storage Type]を選択し、5GBとして割り当てられたストレージを選択します。
図3: DBの詳細を指定
データベース設定で、DBインスタンス識別子を指定します (mysqldb)、マスターユーザー名、およびマスターパスワード(図4を参照)。[次のステップ]をクリックします。
図4: データベース設定の指定
図5に示すように、[Configure Advanced Settings]でVPCを選択します。DMS移行は、RDSDBインスタンスと同じVPCで作成されます。アベイラビリティーゾーンをus-east-1bとして設定します。新しいセキュリティグループを作成するオプションを選択します。 [データベースオプション]で、データベース名(mysqldb)を指定します。データベースポート(3306)を指定し、DBパラメータグループを選択します。
図5: 詳細設定の構成
オプショングループ、IAM DB認証を有効にする、暗号化を有効にする、バックアップ、監視など、他のほとんどまたはすべての設定をデフォルトのままにしておくことができます(図6を参照)。自動バックアップは、DMSソースとしてRDS上のMySQLに対して有効にする必要があります。 DBインスタンスの起動をクリックします 。
図6: DBインスタンスの起動
図7のメッセージに示すように、新しいDBインスタンスの作成が開始されます。[DBインスタンスの表示]をクリックして、DBインスタンスを表示します。
図7: DBインスタンスが作成されています
図8に示すように、RDS上の新しいMySQLDBインスタンスが開始されます。
図8: RDS上のMySQLDBインスタンス
図9に示すように、[セキュリティグループ]リンクをクリックして、すべてのIPアドレスとの間のトラフィックを許可するようにインバウンド/アウトバウンドルールを変更します。
図9: セキュリティグループリンク
図10に示すように、[インバウンド]タブを選択し、[編集]ボタンをクリックしてインバウンドルールを変更します。
図10: インバウンドルールの変更
[受信ルールの編集]で、[タイプ]を[すべてのトラフィック]、[プロトコル]を[すべて]、[ポート範囲]を0〜65535、[送信元]を[任意の場所]に設定し、[保存]をクリックします(図11を参照)。
図11: インバウンドルールを編集する
変更されたインバウンドルールを図12に示します。
図12: インバウンドルール
図13に示すように、アウトバウンドルールは、すべての宛先IPへのトラフィックを許可するようにすでに設定されているため、変更する必要はありません。
図13: アウトバウンドルール
RDS上のMySQLデータベースへの接続
エンドポイントからRDSDBインスタンスホストを取得します。ホストアドレスは、ポートサフィックス:3306が削除されたエンドポイントです。次のmysqlコマンドでホストアドレスとポートを使用してRDS上のMySQLデータベースインスタンスに接続し、MySQLコマンドラインインターフェイスを開始します。
mysql --host=mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com --port=3306 --user=dvohra --password=mysql5db
ホスト、ユーザー、およびパスワードは、ユーザーごとに異なります。次のコマンドを使用して、MySQLアカウントにDMSユーザーへのアクセスを許可します。DMSユーザーはユーザーごとに異なります。
GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON mysqldb.* TO 'dvohra'@'%'; GRANT ALL PRIVILEGES ON awsdms_control.* TO 'dvohra'@'%';
GoogleCloudPlatformプロジェクトの作成
CloudSQLを使用するには、GoogleCloudPlatformプロジェクトを作成する必要があります。プロジェクトを作成するには、[空のプロジェクトを作成する]をクリックします 図14に示すように、[はじめに]ページのリンク。
図14: 空のプロジェクトを作成する
新しいプロジェクト ウィザードで、プロジェクト名を指定します (MySQLDB)そして作成をクリックします 、図15に示すように。
図15: 新しいプロジェクト
図16のダッシュボードに示すように、新しいプロジェクトが作成されます。
図16: 新しいGoogleCloudPlatformプロジェクト
CloudSQLインスタンスの作成
このセクションでは、CloudSQLインスタンスを作成します。図17に示すように、ブラウザでCloudSQLURLhttps://cloud.google.com/sql/に移動します。[ViewConsole]をクリックします。
図17: コンソールを表示
MySQLDBを選択します プロジェクトを作成し、インスタンスの作成をクリックします 、図18に示すように。
図18: インスタンスの作成
インスタンスの作成 ウィザードで、 MySQLを選択します 次へをクリックします 、図19に示すように。
図19: MySQLとしてエンジンを選択する
MySQLインスタンスタイプを選択 、[第2世代を選択]をクリックします 図20に示すように、MySQLの第2世代のインスタンスタイプを選択します。第2世代のインスタンスタイプの利点のいくつかもリストされています。
図20: 第2世代のMySQLインスタンスの選択
MySQL第2世代インスタンスの作成 (図21を参照)、インスタンスIDを指定します およびルートパスワード 、地域を選択します およびゾーン。 作成をクリックします 。
図21: MySQL第2世代インスタンスを作成する
図22の[インスタンス]テーブルに示すように、MySQLインスタンスの作成が開始されます。
図22: CloudSQLMySQLインスタンス
CloudSQLDBインスタンスIPアドレスのルートをVPCルートテーブルに追加する
CloudSQLインスタンスのIPアドレスにアクセスできるように、RDSDBインスタンスとDMS移行が作成されるVPCのルートテーブルを変更する必要があります。まず、図23に示すように、CloudSQLコンソールからCloudSQLインスタンスのIPアドレスを取得します。
図23: CloudSQLDBインスタンスのIPアドレス
ルートテーブルをクリックします 図24に示すように、RDS DBインスタンスが作成され、その後DMSが作成されるVPCのリンク。
図24: ルートテーブルリンク
図25に示すように、リストされているルートを選択し、[編集]をクリックします。
図25: ルート>編集
別のルートを追加をクリックします (図26を参照)。
図26: 別のルートを追加する
図27に示すように、DestinationでCloudSQLインスタンスのIPアドレスを指定します。
図27: CloudSQLインスタンスのIPアドレスとして宛先を指定する
図28に示すように、VPCに関連付けられたインターネットゲートウェイとしてターゲットを選択します。インターネットゲートウェイを使用すると、VPC内のインスタンスとインターネット間の通信が可能になります。
図28: インターネットゲートウェイとしてのターゲットの選択
[保存]をクリックしてルートを保存します。図29に示すように、ルートが追加されます。
図29: CloudSQLインスタンスのルート
DMSレプリケーションインスタンスの作成
このセクションでは、CloudSQLインスタンスをRDSに移行するためのレプリケーションインスタンスを作成します。 移行の作成をクリックします 図30に示すように、データベース移行サービスの開始ページで。
図30: 移行を作成する
[ようこそ]ページで、[次へ]をクリックします(図31を参照)。
図31: ウェルカムページ>次へ
レプリケーションインスタンスの作成 ページで、図32に示すように、名前と説明を指定します。インスタンスクラスをdms.t2.mediumとして選択します。レプリケーションエンジンのバージョンを2.2.1として選択します。 RDSDBインスタンスが作成されたのと同じVPCを選択します。マルチAZAいいえを選択します。[パブリックアクセス可能]チェックボックスを選択します。
図32: レプリケーションインスタンスの構成
Advancedで、Allocated storage(50 GB)を指定し、Replication Subnet Groupを選択し、図33に示すように、RDSDBインスタンスus-east-1bと同じようにAvailabilityzoneを選択します。デフォルトのVPCセキュリティグループを選択します。 DMS用に作成されたKMSマスターキーを選択します。
図33: 詳細オプションの構成
図34に示すように、デフォルトのメンテナンス設定を選択し、[次へ]をクリックします。
図34: レプリケーションインスタンス>次へ
図35に示すように、「レプリケーションインスタンスが作成されています」というメッセージが表示されます。ソースデータベースエンドポイントとターゲットデータベースエンドポイントは、レプリケーションインスタンスが作成された後にのみ構成できます。
図35: レプリケーションインスタンスが作成されています
レプリケーションインスタンスが作成されると、「レプリケーションインスタンスが正常に作成されました」というメッセージが表示されます(図36を参照)。
図36: レプリケーションインスタンスが正常に作成されました
レプリケーションインスタンスには、図37に示すように、作成された新しいレプリケーションインスタンスが一覧表示されます。
図37: レプリケーションインスタンス
CloudSQLDBインスタンスへのレプリケーションインスタンス接続用のネットワークの追加
まず、レプリケーションインスタンスが実行されているIPアドレスを決定します。図38に示すように、IPアドレスはレプリケーションインスタンスコンソールから取得できます。
図38: レプリケーションインスタンスのIPアドレス
IPアドレスを取得したら、次にIPアドレスで構成されるネットワークをCloudSQLのMySQLインスタンスに追加します。図39に示すように、CloudSQLMySQLインスタンスのリンクをクリックします。
図39: CloudSQLMySQLDBインスタンス
認証MySQLデータベースインスタンスをクリックします 図40に示す詳細ページ。
図40: 承認
ネットワークの追加をクリックします (図41を参照)。
図41: ネットワークを追加
新しいネットワーク 、図42に示すように、ネットワーク名とネットワークIPアドレスをレプリケーションインスタンスのIPアドレスとして指定し、[完了]をクリックします。
図42: CloudSQLへの新しいネットワークの追加
図43に示すように、新しいネットワークが追加されます。[保存]をクリックします。 ネットワークを保存します。
図43: 新しいネットワークの保存
図44に示すように、「インスタンスが更新されています」というメッセージが表示されます。
図44: インスタンスが更新されています
インスタンスが更新されると、図45に示すように、インスタンスアイコンは同じことを示します。
図45: インスタンスが更新されました
[概要]をクリックして(図46を参照)、インスタンスの概要を表示します。
図46: 概要
新しいネットワークは承認済みネットワークにリストされます インスタンスの詳細 図47に示すように、ページ。
図47: 許可されたネットワーク
データベースレプリケーションエンドポイントの作成
次に、ソースデータベースエンドポイントとターゲットデータベースエンドポイントを作成します。ソースデータベースとターゲットデータベースのエンドポイント識別子を指定します。ソースエンジンには、 mysqlを選択します 、図48に示すように。
図48: mysqlとしてソースエンジンを選択する
ターゲットエンジンをmysqlとして選択します また、図49に示すように。
図49: ターゲットエンジンをmysqlとして選択
ソースサーバー名については、図50に示すように、CloudSQLインスタンスのIPv4アドレスをコピーします。
図50: CloudSQLインスタンスのIPv4アドレス
ターゲットデータベースの場合、サーバー名をエンドポイントからMySQLデータベースのRDS DBインスタンスのポートサフィックス「:3306」を引いたものとして指定します(図51を参照)。ソースデータベースとターゲットデータベースのポートを3306として指定します。ソース接続とターゲット接続の両方でSSLモードをなしとして選択します。ソースデータベースのユーザー名をrootとして指定し、CloudSQLインスタンスの作成時に設定したパスワードを指定します。同様に、RDS上のターゲットデータベースのユーザー名とパスワードを設定します。
図51: ソースおよびターゲットデータベース接続の詳細の構成
ソースデータベースとターゲットデータベースの両方の[詳細設定]セクションで、DMS用に作成されたKMSマスターキーdmsを選択します。 テストの実行をクリックします 、図52に示すように、ソース接続の場合。同様に、[ターゲット接続のテストの実行]をクリックします。
図52: テストを実行する
テストの結果が、ソースデータベース接続とターゲットデータベース接続の両方で「接続テストに成功」した場合は、図53に示すように、[次へ]をクリックします。
図53: 接続のテスト
レプリケーションタスクの作成
図54に示すように、[タスクの作成]で、タスク名とタスクの説明を指定します。ソースエンドポイント、ターゲットエンドポイント、およびレプリケーションインスタンスはハードコーディングされています。 [既存のデータを移行する]として[移行タイプ]を選択します。 [作成時にタスクを開始する]チェックボックスを選択します。
図54: タスクの作成
タスク設定で、ターゲットテーブルの準備モードを選択/設定します 何もしない 、レプリケーションにLOB列を含める 制限付きLOBモードとして 、および図55に示すように、最大LOBサイズは32kbです。ログを有効にするを選択します。 オプション。
図55: タスク設定
テーブルマッピング 、図56に示すように、少なくとも1つの選択ルールを追加する必要があります。
図56: テーブルマッピング
スキーマを入力を選択します スキーマ名のオプションは 分野。 スキーマ名は次のようになりますを指定します mysql 、図57に示すように。テーブル名は次のようになりますを指定します innodb_index_stats。 アクションを選択します 含める 。 選択ルールの追加をクリックします 。
図57: 選択ルールの追加
別の選択ルールを追加するには、選択ルールの追加をクリックします 図58に示すように、リンク。
図58: 選択ルールを追加
テーブルmysql.innodb_table_statsを含めるための選択ルールを追加します 、図59に示すように。
図59: mysql.innodb_table_statsの選択ルールを追加する
選択ルールは、テーブルごとに1つずつ、またはワイルドカード正規表現を使用して追加できます。次に、%を使用して選択ルールを追加します。 選択ルールの追加をクリックします 、図60に示すように。
図60: 選択ルールのリンクを追加
スキーマを指定します mysqlとして テーブル名を指定します time_zone%として 、「time_zone」で始まるすべてのテーブルを表します(図61を参照)。
図61: time_zoneで始まるmysqlスキーマにすべてのテーブルを含めるための選択ルールの追加
タスクの作成をクリックします 図62に示すように、タスクを作成します。
図62: タスクの作成
作成中のステータスで新しいタスクが追加されます 最初は、図63に示すように、[サーバーからのデータの更新]をクリックします。 定期的にタスクのステータスを更新します。
図63: ステータスCreating
タスクが作成されて実行の準備ができると、図64に示すように、ステータスは準備完了になります。
図64: タスクステータス準備完了
レプリケーションタスクの実行
レプリケーションインスタンスを開始するには、図65に示すように、[開始/再開]ボタンをクリックします。
図65: 開始/再開
タスクのステータスは開始中になります (図66を参照)。定期的に、サーバーからデータを更新をクリックします 図66に示すように、ボタンをクリックしてステータスを更新します。
図66: タスクステータス開始
タスクのステータスは実行中になります タスクの実行が開始されたとき。フルロードが完了すると、ステータスはロード完了になります。 、図67に示すように。
図67: ロードが完了しました
移行されたテーブルの探索
読み込まれたテーブル 図68に示すように、移行された7つのテーブルの列の値は7です。
図68: 7つのテーブルが移行されました
移行されたテーブルの詳細を確認するには、テーブル統計を選択します 図69に示すように、タブ。
図69: テーブル統計
図70に示すように、移行されたすべてのテーブルが一覧表示されます。
図70: 移行されたテーブル
CloudWatchログの探索
CloudWatchログを調べるには、ログのリンクをクリックしてください タブ(図71を参照)。
図71: ログリンク
CloudWatchログには、図72に示すように、移行された各テーブルのログエントリが一覧表示されます。選択ルールと変換ルールを使用して設定されたすべてのテーブルが移行されると、「すべてのテーブルがロードされます」というログエントリが追加されます。
図72: CloudWatchログ
すべてのテーブルが読み込まれると、ログエントリタスク管理が終了しました 図73に示すように、追加されます。
図73: タスク管理が終了しました
移行の削除
移行を削除するには、移行の作成と逆の手順で行います。
- 移行タスクを削除します。
- データベースエンドポイントを削除します。
- レプリケーションインスタンスを削除します。
タスクを削除するには、図74に示すように、タスクを選択して[削除]をクリックします。
図74: タスク>削除
図75に示すように、[タスクの削除]ダイアログで[削除]をクリックします。
図75: タスク確認ダイアログの削除
タスクのステータスは削除中になります (図76を参照)。
図76: タスクの削除
エンドポイントを削除するには、図77に示すように、エンドポイントを選択して[削除]をクリックします。
図77: エンドポイント>削除
エンドポイントの削除 図78に示すように、確認ダイアログで[削除]をクリックします。
図78: エンドポイント確認ダイアログの削除
図79に示すように、エンドポイントのステータスは「削除中」になります。
図79: エンドポイントの削除
レプリケーションインスタンスを削除するには、図80に示すように、レプリケーションインスタンスを選択し、[削除]をクリックします。
図80: レプリケーションインスタンス>削除
レプリケーションインスタンスの削除 確認ダイアログで、[削除]をクリックします(図81を参照)。
図81: 確認ダイアログレプリケーションインスタンスの削除
図82に示すように、レプリケーションインスタンスのステータスは削除中になります。
図82: レプリケーションインスタンスの削除
DBインスタンスの削除
次に、ソースデータベースとターゲットデータベースを削除します。 RDS上のMySQLデータベースであるターゲットデータベースを削除するには、図83に示すように、[すべてのインスタンス]テーブルでデータベースインスタンスを選択し、[インスタンスアクション]>[削除]をクリックします。
図83: インスタンスアクション>削除
図84に示すように、[DBインスタンスの削除]で、最終スナップショットを作成しないオプションを選択し、確認チェックボックスを選択して、[削除]をクリックします。
図84: DBインスタンスの削除ダイアログ
図85の削除ステータスで示されているように、RDSDBインスタンスは削除され始めます。
図85: RDSDBインスタンスの削除
CloudSQL DBインスタンスを削除するには、 mysqlを右クリックします DBインスタンス管理アイコンをクリックし、[削除]を選択します(図86を参照)。
図86: CloudSQLmysql>削除
インスタンスを削除しますか? 確認ダイアログで、インスタンスが削除されることを確認するために提供されたフィールドにインスタンス名を指定し、図87に示すように、[削除]をクリックします。
図87: インスタンス確認ダイアログの削除
結論
この記事では、AWS DatabaseMigrationServiceを使用してCloudSQL上のMySQLをAWSRDSに移行する方法について説明しました。