チェックポイント
Prepare the source database for migration.
/ 20
Create a Database Migration Service connection profile.
/ 20
Create and start a continuous migration job.
/ 20
Confirm the data in Cloud SQL for PostgreSQL.
/ 20
Promote Cloud SQL to be a stand-alone instance for reading and writing data.
/ 20
Database Migration Service を使用して Cloud SQL for PostgreSQL に移行
GSP918
概要
Database Migration Service には、1 回限りのジョブや継続的なジョブでさまざまな接続オプションを使用してデータを Cloud SQL に移行するためのオプションが用意されています。接続オプションには、IP 許可リスト、VPC ピアリング、リバース SSH トンネルなどがあります(https://cloud.google.com/database-migration/docs/postgresql/configure-connectivity の接続オプションに関するドキュメントを参照)。
このラボでは、継続的な Database Migration Service ジョブと接続用の VPC ピアリングを使用して、スタンドアロンの PostgreSQL データベース(仮想マシン上で実行)を Cloud SQL for PostgreSQL に移行します。
Database Migration Service を介してデータベースを移行するには、移行元データベースである程度の準備が必要になります。たとえば、レプリケーション権限を持つ専用ユーザーの作成、移行元データベースへの pglogical
データベース拡張機能の追加、移行するデータベースおよび postgres データベースのスキーマやテーブルに対する権限のユーザーへの付与などを行います。
移行ジョブを作成して実行した後、データベースの最初のコピーが Cloud SQL for PostgreSQL インスタンスに正常に移行されていることを確認します。継続的な移行ジョブによってデータ更新が移行元データベースから Cloud SQL インスタンスにどのように適用されるかについても確認します。移行ジョブを完結させるために、Cloud SQL インスタンスをスタンドアロン データベースにプロモートして、データを読み書きできるようにします。
演習内容
- 移行元データベースを準備する。
- PostgreSQL インスタンス(スタンドアロン PostgreSQL など)への移行元接続のプロファイルを作成する。
- VPC ピアリングを使用して、移行元データベースと移行先データベースのインスタンス間の接続を構成する。
- 移行元データベースへのアクセスを許可するように、ファイアウォールとデータベースのアクセスルールを構成する。
- Database Migration Service を使用して、継続的な移行ジョブを作成、実行、検証する。
- 移行先インスタンス(Cloud SQL for PostgreSQL)をスタンドアロン データベースにプロモートして、データを読み書きできるようにする。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
Database Migration API が有効になっていることを確認する
- Google Cloud コンソールで、上部の検索バーに「Database Migration API」と入力します。検索結果の「Database Migration API」をクリックします。
このページには、ステータス情報、またはこの API を有効にするオプションが表示されます。
- 必要に応じて API を有効にします。
Service Networking API が有効になっていることを確認する
VPC ピアリングとプライベート IP アドレスを介した接続をサポートするように Cloud SQL を構成するには、Service Networking API が必要です。
- Cloud コンソールの上部の検索バーに「Service Networking API」と入力します。検索結果の「Service Networking API」をクリックします。
このページには、ステータス情報、またはこの API を有効にするオプションが表示されます。
- 必要に応じて API を有効にします。
タスク 1. 移行元データベースを準備する
このタスクでは、Database Migration Service で移行を実行するために必要なサポート機能を移行元データベースに追加します。具体的には、次のとおりです。
- pglogical データベース拡張機能をインストールして構成する。
- Cloud Shell と Cloud SQL からのアクセスを許可するようにスタンドアロンの PostgreSQL データベースを構成する。
-
pglogical
データベース拡張機能を、スタンドアロン サーバー上のpostgres
、orders
、gmemegen_db
データベースに追加する。 - データベース移行用の(レプリケーション権限を持つ)
migration_admin
ユーザーを作成し、そのユーザーにスキーマやリレーションに対する必要な権限を付与する。
pglogical 拡張機能でデータベースをアップグレードする
このステップでは、pglogical
データベース拡張機能をダウンロードして postgresql-vm
VM インスタンスの orders データベースと postgres データベースに追加します。
-
Google Cloud コンソールのナビゲーション メニュー(
)で、[Compute Engine] > [VM インスタンス] をクリックします。
-
postgresql-vm
のエントリで、[接続
] の下にある [SSH] をクリックします。 -
プロンプトが表示されたら、[承認] をクリックします。
-
新しいブラウザ ウィンドウのターミナルで、
pglogical
データベース拡張機能をインストールします。
pglogical
は、PostgreSQL 拡張機能として完全に実装される論理的なレプリケーション システムです。完全に統合されているため、トリガーや外部プログラムは必要ありません。物理レプリケーションに代わるもので、選択的なレプリケーションにパブリッシュ / サブスクライブ モデルを使用して、データを非常に効率的に複製します。詳しくは https://github.com/2ndQuadrant/pglogical をご覧ください。
- 追加するものをダウンロードして PostgreSQL 構成ファイルに適用し(pglogical 拡張機能を有効にするため)、postgresql サービスを再起動します。
pg_hba.conf
で、これらのコマンドによってすべてのホストにアクセスを許可するルールが追加されました。
postgresql.conf
で、これらのコマンドによって、pglogical がすべてのアドレスをリッスンするように構成するための最小限の構成が設定されました。
上のコード スニペットが関連ファイルに追加され、PostgreSQL サービスが再起動されました。
- psql ツールを起動します。
-
pglogical
データベース拡張機能をpostgres
、orders
、gmemegen_db
データベースに追加します。
- サーバー上の PostgreSQL データベースを一覧表示します。
デフォルトの postgresql データベースのほかに、このラボ用で提供されている orders
データベースと gmemegen_db
データベースが表示されます。このラボでは gmemegen_db
データベースを使用しませんが、後のラボで使用するために移行に含めます。
データベース移行ユーザーを作成する
このステップでは、データベースの移行を管理するための専用ユーザーを作成します。
- psql で以下のコマンドを入力して、レプリケーション ロールを持つ新しいユーザーを作成します。
移行ユーザーに権限を割り当てる
このステップでは、migration_admin
ユーザーに必要な権限を割り当てて、Database Migration Service でデータベースを移行できるようにします。
-
psql で、
postgres
データベースのpglogical
スキーマとテーブルに対する権限を付与します。
-
psql で、
orders
データベースのpglogical
スキーマとテーブルに対する権限を付与します。
-
psql で、
orders
データベースのpublic
スキーマとテーブルに対する権限を付与します。
-
psql で、
gmemegen_db
データベースのpglogical
スキーマとテーブルに対する権限を付与します。
-
psql で、
gmemegen_db
データベースのpublic
スキーマとテーブルに対する権限を付与します。
これで、移行元データベースが移行用に準備されました。migration_admin
ユーザーに付与した権限があれば、Database Migration Service で postgres
、orders
、gmemegen_db
データベースを移行できます。
後で移行をテストするときに移行元データを編集できるように、migration_admin
ユーザーを orders
データベースのテーブルのオーナーにします。
- psql で、以下のコマンドを実行します。
- psql と postgres ユーザー セッションを終了します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 2. スタンドアロンの PostgreSQL データベースの Database Migration Service 接続プロファイルを作成する
このタスクでは、PostgreSQL 移行元インスタンスの接続プロファイルを作成します。
PostgreSQL 移行元インスタンスの接続情報を取得する
このステップでは、Cloud SQL に移行する移行元データベース インスタンスの内部 IP アドレスを特定します。
-
Google Cloud コンソールのナビゲーション メニュー(
)で、[Compute Engine] > [VM インスタンス] をクリックします。
-
postgresql-vm という名前のインスタンスがある行を確認します。
-
内部 IP の値(10.128.0.2 など)をコピーします。
PostgreSQL 移行元インスタンスの新しい接続プロファイルを作成する
接続プロファイルには、移行元データベース インスタンス(スタンドアロンの PostgreSQL など)に関する情報が保存され、Database Migration Service でデータを移行元から移行先 Cloud SQL データベース インスタンスに移行するために使用されます。作成した接続プロファイルは、さまざまな移行ジョブで再利用できます。
このステップでは、PostgreSQL 移行元インスタンスの新しい接続プロファイルを作成します。
-
Google Cloud コンソールのナビゲーション メニュー(
)で、[データベースの移行] > [接続プロファイル] をクリックします。
-
[プロファイルの作成] をクリックします。
-
[データベース エンジン] で [PostgreSQL] を選択します。
-
[接続プロファイルの名前] に「postgres-vm」と入力します。
-
[ホスト名または IP アドレス] に、前のタスクでコピーした PostgreSQL 移行元インスタンスの内部 IP(10.128.0.2 など)を入力します。
-
[ポート] に「5432」と入力します。
-
[ユーザー名] に「migration_admin」と入力します。
-
[パスワード] に「DMS_1s_cool!」と入力します。
-
[リージョン] で
を選択します。 -
他のすべての値はデフォルトのままにします。
-
[作成] をクリックします。
postgres-vm という名前の新しい接続プロファイルが接続プロファイル リストに表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 3. 継続的な移行ジョブを作成して開始する
新しい移行ジョブを作成する場合は、まず前に作成した接続プロファイルを使用して移行元データベース インスタンスを定義します。次に、新しい移行先データベース インスタンスを作成し、移行元インスタンスと移行先インスタンスの間の接続を構成します。
このタスクでは、移行ジョブ インターフェースを使用して新しい Cloud SQL for PostgreSQL データベース インスタンスを作成し、PostgreSQL 移行元インスタンスからの継続的な移行ジョブの移行先として設定します。
継続的な移行ジョブを作成する
このステップでは、新しい継続的な移行ジョブを作成します。
-
Google Cloud コンソールのナビゲーション メニュー(
)で、[データベースの移行] > [移行ジョブ] をクリックします。
-
[移行ジョブを作成] をクリックします。
-
[移行ジョブ名] に「vm-to-cloudsql」と入力します。
-
[移行元データベース エンジン] で [PostgreSQL] を選択します。
-
[送信先リージョン] で
を選択します。 -
[移行先データベース エンジン] で [Cloud SQL for PostgreSQL] を選択します。
-
[移行ジョブの種類] で [継続的] を選択します。
他の設定はデフォルトのままにします。
- [保存して続行] をクリックします。
移行元インスタンスを定義する
このステップでは、移行元インスタンスを移行用に定義します。
- [ソース接続プロファイル] で [postgres-vm] を選択します。
他の設定はデフォルトのままにします。
- [保存して続行] をクリックします。
移行先インスタンスを作成する
このステップでは、移行用の移行先インスタンスを作成します。
-
[宛先インスタンス ID] に「postgresql-cloudsql」と入力します。
-
[パスワード] に「supersecret!」と入力します。
-
[Cloud SQL のエディションの選択] で、[Enterprise] エディションを選択します。
-
[データベースのバージョン] で [Cloud SQL for PostgreSQL 13] を選択します。
-
[リージョンとゾーンの選択] セクションで [シングルゾーン] を選択し、プライマリ ゾーンとして
を選択します。 -
[インスタンス接続] で [プライベート IP] と [パブリック IP] を選択します。
-
[自動的に割り当てられた IP 範囲を使用する] を選択します。
他の設定はデフォルトのままにします。
- [割り振りと接続] をクリックします。
注: このステップには数分かかる場合があります。リクエストを再試行するよう求められた場合は、[再試行] ボタンをクリックして、Service Networking API を更新します。
このステップが完了すると、新しいメッセージにより、インスタンスで既存のマネージド サービス接続が使用されることが通知されます。
前のステップのポイント 5 で自動的に生成された IP 範囲にアクセスを許可するように VM インスタンスの pg_hba.conf ファイルを編集する必要があります。その作業は、このタスクの最後で移行構成をテストする前のステップで行います。
Cloud SQL の移行先インスタンスを作成するために必要な追加情報を入力します。
-
[マシンシェイプ] で [1 vCPU、3.75 GB] をオンにします。
-
[ストレージの種類] で [SSD] を選択します。
-
[ストレージ容量] で [10 GB] を選択します。
-
[作成して続行] をクリックします。
確認するメッセージが表示されたら、[移行先を作成して続行] をクリックします。移行先データベース インスタンスが作成中であることを示すメッセージが表示されます。その間に次のステップに進みます。
接続方法を定義する
このステップでは、移行用の接続方法を定義します。
-
[接続方法] で [VPC ピアリング] を選択します。
-
[VPC] で [デフォルト] を選択します。
VPC ネットワーク(この例のデフォルト ネットワーク)に提供された情報を使用して、Database Migration Service が VPC ピアリングを構成します。
新しいメッセージにより移行先インスタンスが作成されたことが通知されたら、次のステップに進みます。
- [構成して続行] をクリックします。
自動的に割り振られた IP 範囲から postgresql-vm インスタンスへのアクセスを許可する
このステップでは、Database Migration Service にスタンドアロンの PostgreSQL データベースへのアクセスを許可するように pg_hba.conf
PostgreSQL 構成ファイルを編集します。
-
割り振られた IP アドレス範囲を取得します。Google Cloud コンソールのナビゲーション メニュー(
)で、[VPC ネットワーク] > [VPC ネットワーク ピアリング] の順に右クリックして新しいタブで開きます。
-
servicenetworking-googleapis-com
エントリをクリックします。 -
[インポートされたルート] タブで、
移行先 IP 範囲
(10.107.176.0/24 など)を選択してコピーします。 -
VM インスタンスのターミナル セッションで、
pg_hba.conf
ファイルを次のように編集します。
- ファイルの最後の行は次のようになっています。
「すべての IP アドレス」範囲(0.0.0.0/0)を前述のポイント 3 でコピーした範囲に置き換えます。
-
Ctrl-O、Enter、Ctrl-X の順にキーを押して nano エディタを保存し、終了します。
-
PostgreSQL サービスを再起動して、変更を反映します。VM インスタンスのターミナル セッションで次のように入力します。
継続的な移行ジョブをテストして開始する
このステップでは、移行ジョブをテストして開始します。
-
前に開いた [Database Migration Service] タブで、移行ジョブの詳細を確認します。
-
[ジョブをテスト] をクリックします。
-
テストが成功したら、[ジョブを作成して開始] をクリックします。
確認するメッセージが表示されたら、[作成して開始] をクリックします。
継続的な移行ジョブのステータスを確認する
このステップでは、継続的な移行ジョブが実行されていることを確認します。
-
Google Cloud コンソールのナビゲーション メニュー(
)で、[データベースの移行] > [移行ジョブ] をクリックします。
-
移行ジョブ [vm-to-cloudsql] をクリックして、詳細ページを表示します。
-
移行ジョブのステータスを確認します。
- ジョブが開始されていない場合、ステータスは [開始前] と表示されます。ジョブを開始するか、削除するかを選択できます。
- ジョブが開始されると、ステータスは [開始中] と表示され、[実行中]、[完全なダンプの処理中] に移行して、最初のデータベース ダンプが処理中であることが示されます。
- 最初のデータベース ダンプが完了すると、ステータスは [実行中]、[CDC の処理中] に移行して、継続的な移行がアクティブであることが示されます。
ジョブ ステータスが [実行中]、[CDC の処理中] に変わったら、次のタスクに進みます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 4. Cloud SQL for PostgreSQL でデータを確認する
Cloud SQL で PostgreSQL データベースを確認する
-
Google Cloud コンソールのナビゲーション メニュー(
)で、[データベース] > [SQL] をクリックします。
-
postgresql-cloudsql-master というインスタンス ID を開きます。
-
インスタンス postgresql-cloudsql(PostgreSQL リードレプリカ)をクリックします。
-
[レプリカ インスタンス] メニューで、[データベース] をクリックします。
postgres、orders、gmemegen_db という名前のデータベースが Cloud SQL に移行されていることを確認します。
PostgreSQL インスタンスに接続する
-
[レプリカ インスタンス] メニューで、[概要] をクリックします。
-
[このインスタンスとの接続] セクションまでスクロールし、[Cloud Shell を開く] をクリックします。
PostgreSQL に接続するためのコマンドが Cloud Shell に事前入力されます。
- 事前入力されたコマンドを実行します。
プロンプトが表示されたら API について [承認] をクリックします。
- 前に設定したパスワードの入力を求められたら、次のように入力します。
移行先インスタンスの PostgreSQL インタラクティブ コンソールが有効になりました。
Cloud SQL for PostgreSQL インスタンスのデータを確認する
- PostgreSQL インタラクティブ コンソールでデータベースを選択するには、次のコマンドを実行します。
- パスワードの入力を求められたら、次のように入力します。
-
distribution_centers
テーブルに対してクエリを実行します。
(出力)
- 次のように入力して、PostgreSQL インタラクティブ コンソールを終了します。
スタンドアロンの移行元データを更新して継続的な移行をテストする
- Cloud Shell で次のコマンドを入力して、移行元 PostgreSQL インスタンスに接続します。
- パスワードの入力を求められたら、次のように入力します。
- psql で次のコマンドを入力します。
- インタラクティブな psql セッションを終了します。
Cloud SQL PostgreSQL データベースに接続して更新データが移行されたことを確認する
- Cloud Shell で次のコマンドを入力して、移行先の Cloud SQL PostgreSQL インスタンスに接続します。
- 前に設定したパスワードの入力を求められたら、Cloud SQL インスタンスのパスワードを入力します。
移行先インスタンスの PostgreSQL インタラクティブ コンソールが有効になりました。
Cloud SQL for PostgreSQL データベースのデータを確認する
- Cloud Shell で、PostgreSQL インタラクティブ コンソールのアクティブなデータベースを選択します。
- 前に設定したパスワードの入力を求められたら、次のように入力します。
-
distribution_centers
テーブルに対してクエリを実行します。
(出力)
スタンドアロンの orders
データベースに追加された新しい行が移行されたデータベースに存在することに注意してください。
- PostgreSQL インタラクティブ コンソールを終了します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 5. データの読み取りと書き込みのために Cloud SQL をスタンドアロン インスタンスにプロモートする
-
Google Cloud コンソールのナビゲーション メニュー(
)で、[データベースの移行] > [移行ジョブ] をクリックします。
-
移行ジョブ名 [vm-to-cloudsql] をクリックして、詳細ページを表示します。
-
[プロモート] をクリックします。
確認するメッセージが表示されたら、[プロモート] をクリックします。
プロモートが完了すると、ジョブのステータスが [完了] に更新されます。
- Google Cloud コンソールのナビゲーション メニュー(
)で、[データベース] > [SQL] をクリックします。
postgresql-cloudsql がスタンドアロン インスタンスになり、データの読み書きが可能になっていることに注意してください。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
お疲れさまでした
データベースを PostgreSQL インスタンスから Cloud SQL for PostgreSQL に移行するための継続的な Database Migration Service ジョブを構成する方法について学習しました。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 5 月 14 日
ラボの最終テスト日: 2024 年 5 月 14 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。