arrow_back

Database Migration Service を使用して Cloud SQL for PostgreSQL に移行

ログイン 参加
知識をテストして、コミュニティで共有しましょう
done
700 を超えるハンズオンラボ、スキルバッジ、コースへのアクセス

Database Migration Service を使用して Cloud SQL for PostgreSQL に移行

ラボ 1時間 30分 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
知識をテストして、コミュニティで共有しましょう
done
700 を超えるハンズオンラボ、スキルバッジ、コースへのアクセス

GSP918

Google Cloud セルフペース ラボ

概要

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 コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。

    ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] パネルでも [ユーザー名] を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] パネルでも [パスワード] を確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスのリストを含むメニューを表示するには、左上のナビゲーション メニューをクリックします。ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

Database Migration API が有効になっていることを確認する

  1. Google Cloud コンソールで、上部の検索バーに「Database Migration API」と入力します。検索結果の「Database Migration API」をクリックします。

このページには、ステータス情報、またはこの API を有効にするオプションが表示されます。

  1. 必要に応じて API を有効にします。

Service Networking API が有効になっていることを確認する

VPC ピアリングとプライベート IP アドレスを介した接続をサポートするように Cloud SQL を構成するには、Service Networking API が必要です。

  1. Cloud コンソールの上部の検索バーに「Service Networking API」と入力します。検索結果の「Service Networking API」をクリックします。

このページには、ステータス情報、またはこの API を有効にするオプションが表示されます。

  1. 必要に応じて API を有効にします。

タスク 1. 移行元データベースを準備する

このタスクでは、Database Migration Service で移行を実行するために必要なサポート機能を移行元データベースに追加します。具体的には、次のとおりです。

  • pglogical データベース拡張機能をインストールして構成する。
  • Cloud Shell と Cloud SQL からのアクセスを許可するようにスタンドアロンの PostgreSQL データベースを構成する。
  • pglogical データベース拡張機能を、スタンドアロン サーバー上の postgresordersgmemegen_db データベースに追加する。
  • データベース移行用の(レプリケーション権限を持つ)migration_admin ユーザーを作成し、そのユーザーにスキーマやリレーションに対する必要な権限を付与する。

pglogical 拡張機能でデータベースをアップグレードする

このステップでは、pglogical データベース拡張機能をダウンロードして postgresql-vm VM インスタンスの orders データベースと postgres データベースに追加します。

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[Compute Engine] > [VM インスタンス] をクリックします。

  2. postgresql-vm のエントリで、[接続] の下にある [SSH] をクリックします。

  3. プロンプトが表示されたら、[承認] をクリックします。

  4. 新しいブラウザ ウィンドウのターミナルで、pglogical データベース拡張機能をインストールします。

sudo apt install postgresql-13-pglogical 注: pglogical は、PostgreSQL 拡張機能として完全に実装される論理的なレプリケーション システムです。完全に統合されているため、トリガーや外部プログラムは必要ありません。物理レプリケーションに代わるもので、選択的なレプリケーションにパブリッシュ / サブスクライブ モデルを使用して、データを非常に効率的に複製します。詳しくは https://github.com/2ndQuadrant/pglogical をご覧ください。
  1. 追加するものをダウンロードして PostgreSQL 構成ファイルに適用し(pglogical 拡張機能を有効にするため)、postgresql サービスを再起動します。
sudo su - postgres -c "gsutil cp gs://cloud-training/gsp918/pg_hba_append.conf ." sudo su - postgres -c "gsutil cp gs://cloud-training/gsp918/postgresql_append.conf ." sudo su - postgres -c "cat pg_hba_append.conf >> /etc/postgresql/13/main/pg_hba.conf" sudo su - postgres -c "cat postgresql_append.conf >> /etc/postgresql/13/main/postgresql.conf" sudo systemctl restart postgresql@13-main

pg_hba.conf で、これらのコマンドによってすべてのホストにアクセスを許可するルールが追加されました。

#GSP918 - すべてのホストにアクセスを許可 host all all 0.0.0.0/0 md5

postgresql.conf で、これらのコマンドによって、pglogical がすべてのアドレスをリッスンするように構成するための最小限の構成が設定されました。

#GSP918 - pglogical データベース拡張機能の構成を追加 wal_level = logical # minimal、replica、または logical max_worker_processes = 10 # プロバイダ ノードで必要なデータベースごとに 1 つ # サブスクライバー ノードで必要なノードごとに 1 つ max_replication_slots = 10 # プロバイダ ノードで必要なノードごとに 1 つ max_wal_senders = 10 # プロバイダ ノードで必要なノードごとに 1 つ shared_preload_libraries = 'pglogical' max_wal_size = 1GB min_wal_size = 80MB listen_addresses = '*' # リッスンする IP アドレス、'*' はすべて

上のコード スニペットが関連ファイルに追加され、PostgreSQL サービスが再起動されました。

  1. psql ツールを起動します。
sudo su - postgres psql
  1. pglogical データベース拡張機能を postgresordersgmemegen_db データベースに追加します。
\c postgres; CREATE EXTENSION pglogical; \c orders; CREATE EXTENSION pglogical; \c gmemegen_db; CREATE EXTENSION pglogical;
  1. サーバー上の PostgreSQL データベースを一覧表示します。
\l

デフォルトの postgresql データベースのほかに、このラボ用で提供されている orders データベースと gmemegen_db データベースが表示されます。このラボでは gmemegen_db データベースを使用しませんが、後のラボで使用するために移行に含めます。

List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -------------+----------+----------+---------+---------+----------------------- gmemegen_db | postgres | UTF8 | C.UTF-8 | C.UTF-8 | orders | postgres | UTF8 | C.UTF-8 | C.UTF-8 | postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (5 rows)

データベース移行ユーザーを作成する

このステップでは、データベースの移行を管理するための専用ユーザーを作成します。

  1. psql で以下のコマンドを入力して、レプリケーション ロールを持つ新しいユーザーを作成します。
CREATE USER migration_admin PASSWORD 'DMS_1s_cool!'; ALTER DATABASE orders OWNER TO migration_admin; ALTER ROLE migration_admin WITH REPLICATION;

移行ユーザーに権限を割り当てる

このステップでは、migration_admin ユーザーに必要な権限を割り当てて、Database Migration Service でデータベースを移行できるようにします。

  1. psql で、postgres データベースの pglogical スキーマとテーブルに対する権限を付与します。
\c postgres; GRANT USAGE ON SCHEMA pglogical TO migration_admin; GRANT ALL ON SCHEMA pglogical TO migration_admin; GRANT SELECT ON pglogical.tables TO migration_admin; GRANT SELECT ON pglogical.depend TO migration_admin; GRANT SELECT ON pglogical.local_node TO migration_admin; GRANT SELECT ON pglogical.local_sync_status TO migration_admin; GRANT SELECT ON pglogical.node TO migration_admin; GRANT SELECT ON pglogical.node_interface TO migration_admin; GRANT SELECT ON pglogical.queue TO migration_admin; GRANT SELECT ON pglogical.replication_set TO migration_admin; GRANT SELECT ON pglogical.replication_set_seq TO migration_admin; GRANT SELECT ON pglogical.replication_set_table TO migration_admin; GRANT SELECT ON pglogical.sequence_state TO migration_admin; GRANT SELECT ON pglogical.subscription TO migration_admin;
  1. psql で、orders データベースの pglogical スキーマとテーブルに対する権限を付与します。
\c orders; GRANT USAGE ON SCHEMA pglogical TO migration_admin; GRANT ALL ON SCHEMA pglogical TO migration_admin; GRANT SELECT ON pglogical.tables TO migration_admin; GRANT SELECT ON pglogical.depend TO migration_admin; GRANT SELECT ON pglogical.local_node TO migration_admin; GRANT SELECT ON pglogical.local_sync_status TO migration_admin; GRANT SELECT ON pglogical.node TO migration_admin; GRANT SELECT ON pglogical.node_interface TO migration_admin; GRANT SELECT ON pglogical.queue TO migration_admin; GRANT SELECT ON pglogical.replication_set TO migration_admin; GRANT SELECT ON pglogical.replication_set_seq TO migration_admin; GRANT SELECT ON pglogical.replication_set_table TO migration_admin; GRANT SELECT ON pglogical.sequence_state TO migration_admin; GRANT SELECT ON pglogical.subscription TO migration_admin;
  1. psql で、orders データベースの public スキーマとテーブルに対する権限を付与します。
GRANT USAGE ON SCHEMA public TO migration_admin; GRANT ALL ON SCHEMA public TO migration_admin; GRANT SELECT ON public.distribution_centers TO migration_admin; GRANT SELECT ON public.inventory_items TO migration_admin; GRANT SELECT ON public.order_items TO migration_admin; GRANT SELECT ON public.products TO migration_admin; GRANT SELECT ON public.users TO migration_admin;
  1. psql で、gmemegen_db データベースの pglogical スキーマとテーブルに対する権限を付与します。
\c gmemegen_db; GRANT USAGE ON SCHEMA pglogical TO migration_admin; GRANT ALL ON SCHEMA pglogical TO migration_admin; GRANT SELECT ON pglogical.tables TO migration_admin; GRANT SELECT ON pglogical.depend TO migration_admin; GRANT SELECT ON pglogical.local_node TO migration_admin; GRANT SELECT ON pglogical.local_sync_status TO migration_admin; GRANT SELECT ON pglogical.node TO migration_admin; GRANT SELECT ON pglogical.node_interface TO migration_admin; GRANT SELECT ON pglogical.queue TO migration_admin; GRANT SELECT ON pglogical.replication_set TO migration_admin; GRANT SELECT ON pglogical.replication_set_seq TO migration_admin; GRANT SELECT ON pglogical.replication_set_table TO migration_admin; GRANT SELECT ON pglogical.sequence_state TO migration_admin; GRANT SELECT ON pglogical.subscription TO migration_admin;
  1. psql で、gmemegen_db データベースの public スキーマとテーブルに対する権限を付与します。
GRANT USAGE ON SCHEMA public TO migration_admin; GRANT ALL ON SCHEMA public TO migration_admin; GRANT SELECT ON public.meme TO migration_admin;

これで、移行元データベースが移行用に準備されました。migration_admin ユーザーに付与した権限があれば、Database Migration Servicepostgresordersgmemegen_db データベースを移行できます。

後で移行をテストするときに移行元データを編集できるように、migration_admin ユーザーを orders データベースのテーブルのオーナーにします。

  1. psql で、以下のコマンドを実行します。
\c orders; \dt ALTER TABLE public.distribution_centers OWNER TO migration_admin; ALTER TABLE public.inventory_items OWNER TO migration_admin; ALTER TABLE public.order_items OWNER TO migration_admin; ALTER TABLE public.products OWNER TO migration_admin; ALTER TABLE public.users OWNER TO migration_admin; \dt List of relations Schema | Name | Type | Owner --------+----------------------+-------+------- public | distribution_centers | table | migration_admin public | inventory_items | table | migration_admin public | order_items | table | migration_admin public | products | table | migration_admin public | users | table | migration_admin (5 rows)
  1. psql と postgres ユーザー セッションを終了します。
\q exit

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 PostgreSQL 移行元インスタンスを移行用に準備する。

タスク 2. スタンドアロンの PostgreSQL データベースの Database Migration Service 接続プロファイルを作成する

このタスクでは、PostgreSQL 移行元インスタンスの接続プロファイルを作成します。

PostgreSQL 移行元インスタンスの接続情報を取得する

このステップでは、Cloud SQL に移行する移行元データベース インスタンスの内部 IP アドレスを特定します。

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[Compute Engine] > [VM インスタンス] をクリックします。

  2. postgresql-vm という名前のインスタンスがある行を確認します。

  3. 内部 IP の値(10.128.0.2 など)をコピーします。

PostgreSQL 移行元インスタンスの新しい接続プロファイルを作成する

接続プロファイルには、移行元データベース インスタンス(スタンドアロンの PostgreSQL など)に関する情報が保存され、Database Migration Service でデータを移行元から移行先 Cloud SQL データベース インスタンスに移行するために使用されます。作成した接続プロファイルは、さまざまな移行ジョブで再利用できます。

このステップでは、PostgreSQL 移行元インスタンスの新しい接続プロファイルを作成します。

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[データベースの移行] > [接続プロファイル] をクリックします。

  2. [プロファイルの作成] をクリックします。

  3. [データベース エンジン] で [PostgreSQL] を選択します。

  4. [接続プロファイルの名前] に「postgres-vm」と入力します。

  5. [ホスト名または IP アドレス] に、前のタスクでコピーした PostgreSQL 移行元インスタンスの内部 IP(10.128.0.2 など)を入力します。

  6. [ポート] に「5432」と入力します。

  7. [ユーザー名] に「migration_admin」と入力します。

  8. [パスワード] に「DMS_1s_cool!」と入力します。

  9. [リージョン] で を選択します。

  10. 他のすべての値はデフォルトのままにします。

  11. [作成] をクリックします。

postgres-vm という名前の新しい接続プロファイルが接続プロファイル リストに表示されます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 PostgreSQL 移行元インスタンスの新しい接続プロファイルを作成する。

タスク 3. 継続的な移行ジョブを作成して開始する

新しい移行ジョブを作成する場合は、まず前に作成した接続プロファイルを使用して移行元データベース インスタンスを定義します。次に、新しい移行先データベース インスタンスを作成し、移行元インスタンスと移行先インスタンスの間の接続を構成します。

このタスクでは、移行ジョブ インターフェースを使用して新しい Cloud SQL for PostgreSQL データベース インスタンスを作成し、PostgreSQL 移行元インスタンスからの継続的な移行ジョブの移行先として設定します。

継続的な移行ジョブを作成する

このステップでは、新しい継続的な移行ジョブを作成します。

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[データベースの移行] > [移行ジョブ] をクリックします。

  2. [移行ジョブを作成] をクリックします。

  3. [移行ジョブ名] に「vm-to-cloudsql」と入力します。

  4. [移行元データベース エンジン] で [PostgreSQL] を選択します。

  5. [送信先リージョン] で を選択します。

  6. [移行先データベース エンジン] で [Cloud SQL for PostgreSQL] を選択します。

  7. [移行ジョブの種類] で [継続的] を選択します。

他の設定はデフォルトのままにします。

  1. [保存して続行] をクリックします。

移行元インスタンスを定義する

このステップでは、移行元インスタンスを移行用に定義します。

  1. [ソース接続プロファイル] で [postgres-vm] を選択します。

他の設定はデフォルトのままにします。

  1. [保存して続行] をクリックします。

ソース接続プロファイルを選択すると、移行元のホスト名や IP アドレス、ポート、ユーザー名、暗号化のタイプなど、構成の詳細が表示されます。

移行先インスタンスを作成する

このステップでは、移行用の移行先インスタンスを作成します。

  1. [宛先インスタンス ID] に「postgresql-cloudsql」と入力します。

  2. [パスワード] に「supersecret!」と入力します。

  3. [Cloud SQL のエディションの選択] で、[Enterprise] エディションを選択します。

  4. [データベースのバージョン] で [Cloud SQL for PostgreSQL 13] を選択します。

  5. [リージョンとゾーンの選択] セクションで [シングルゾーン] を選択し、プライマリ ゾーンとして を選択します。

  6. [インスタンス接続] で [プライベート IP] と [パブリック IP] を選択します。

  7. [自動的に割り当てられた IP 範囲を使用する] を選択します。

他の設定はデフォルトのままにします。

  1. [割り振りと接続] をクリックします。

自動的に割り振られた IP 範囲を使用するには、デフォルトのオプションのままにします。

注: このステップには数分かかる場合があります。リクエストを再試行するよう求められた場合は、[再試行] ボタンをクリックして、Service Networking API を更新します。

このステップが完了すると、新しいメッセージにより、インスタンスで既存のマネージド サービス接続が使用されることが通知されます。

前のステップのポイント 5 で自動的に生成された IP 範囲にアクセスを許可するように VM インスタンスの pg_hba.conf ファイルを編集する必要があります。その作業は、このタスクの最後で移行構成をテストする前のステップで行います。

新しいメッセージにより、インスタンスで既存のマネージド サービス接続が使用されることが通知されます。

Cloud SQL の移行先インスタンスを作成するために必要な追加情報を入力します。

  1. [マシンシェイプ] で [1 vCPU、3.75 GB] をオンにします。

  2. [ストレージの種類] で [SSD] を選択します。

  3. [ストレージ容量] で [10 GB] を選択します。

  4. [作成して続行] をクリックします。

確認するメッセージが表示されたら、[移行先を作成して続行] をクリックします。移行先データベース インスタンスが作成中であることを示すメッセージが表示されます。その間に次のステップに進みます。

接続方法を定義する

このステップでは、移行用の接続方法を定義します。

移行先 Cloud SQL インスタンスが作成されると構成して続行するためのボタンが有効になることを示すメッセージが表示されます。

  1. [接続方法] で [VPC ピアリング] を選択します。

  2. [VPC] で [デフォルト] を選択します。

VPC ネットワーク(この例のデフォルト ネットワーク)に提供された情報を使用して、Database Migration Service が VPC ピアリングを構成します。

新しいメッセージにより移行先インスタンスが作成されたことが通知されたら、次のステップに進みます。

新しいメッセージにより、移行先 Cloud SQL インスタンスが作成されたことが通知されます。

  1. [構成して続行] をクリックします。

自動的に割り振られた IP 範囲から postgresql-vm インスタンスへのアクセスを許可する

このステップでは、Database Migration Service にスタンドアロンの PostgreSQL データベースへのアクセスを許可するように pg_hba.conf PostgreSQL 構成ファイルを編集します。

  1. 割り振られた IP アドレス範囲を取得します。Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[VPC ネットワーク] > [VPC ネットワーク ピアリング] の順に右クリックして新しいタブで開きます。

  2. servicenetworking-googleapis-com エントリをクリックします。

  3. [インポートされたルート] タブで、移行先 IP 範囲(10.107.176.0/24 など)を選択してコピーします。

  4. VM インスタンスのターミナル セッションで、pg_hba.conf ファイルを次のように編集します。

sudo nano /etc/postgresql/13/main/pg_hba.conf
  1. ファイルの最後の行は次のようになっています。
#GSP918 - すべてのホストにアクセスを許可 host all all 0.0.0.0/0 md5

「すべての IP アドレス」範囲(0.0.0.0/0)を前述のポイント 3 でコピーした範囲に置き換えます。

#GSP918 - すべてのホストにアクセスを許可 host all all 10.107.176.0/24 md5 注: 上記のステップがなくても移行は機能しますが、このようにすることで移行プロセス中に移行元データベースのセキュリティが強化され、さらに、移行後に、移行されたデータベースが信頼できるデータソースになったときにアクセスが制限されるという利点があります。
  1. Ctrl-O、Enter、Ctrl-X の順にキーを押して nano エディタを保存し、終了します。

  2. PostgreSQL サービスを再起動して、変更を反映します。VM インスタンスのターミナル セッションで次のように入力します。

sudo systemctl start postgresql@13-main

継続的な移行ジョブをテストして開始する

このステップでは、移行ジョブをテストして開始します。

  1. 前に開いた [Database Migration Service] タブで、移行ジョブの詳細を確認します。

  2. [ジョブをテスト] をクリックします。

  3. テストが成功したら、[ジョブを作成して開始] をクリックします。

ジョブを作成して開始するためのボタンをクリックして、ジョブが正常に開始されることを確認してください。

確認するメッセージが表示されたら、[作成して開始] をクリックします。

継続的な移行ジョブのステータスを確認する

このステップでは、継続的な移行ジョブが実行されていることを確認します。

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[データベースの移行] > [移行ジョブ] をクリックします。

  2. 移行ジョブ [vm-to-cloudsql] をクリックして、詳細ページを表示します。

  3. 移行ジョブのステータスを確認します。

    • ジョブが開始されていない場合、ステータスは [開始前] と表示されます。ジョブを開始するか、削除するかを選択できます。
    • ジョブが開始されると、ステータスは [開始中] と表示され、[実行中]、[完全なダンプの処理中] に移行して、最初のデータベース ダンプが処理中であることが示されます。
    • 最初のデータベース ダンプが完了すると、ステータスは [実行中]、[CDC の処理中] に移行して、継続的な移行がアクティブであることが示されます。

ジョブ ステータスが [実行中]、[CDC の処理中] に変わったら、次のタスクに進みます。

vm-to-cloudsql という名前の移行ジョブのステータスが [実行中]、[CDC の処理中] になっています。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 継続的な移行ジョブを作成、開始、確認する。

タスク 4. Cloud SQL for PostgreSQL でデータを確認する

Cloud SQL で PostgreSQL データベースを確認する

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[データベース] > [SQL] をクリックします。

  2. postgresql-cloudsql-master というインスタンス ID を開きます。

  3. インスタンス postgresql-cloudsql(PostgreSQL リードレプリカ)をクリックします。

  4. [レプリカ インスタンス] メニューで、[データベース] をクリックします。

postgresordersgmemegen_db という名前のデータベースが Cloud SQL に移行されていることを確認します。

Cloud SQL の移行されたデータベース。

PostgreSQL インスタンスに接続する

  1. [レプリカ インスタンス] メニューで、[概要] をクリックします。

  2. [このインスタンスとの接続] セクションまでスクロールし、[Cloud Shell を開く] をクリックします。

PostgreSQL に接続するためのコマンドが Cloud Shell に事前入力されます。

gcloud sql connect postgresql-cloudsql --user=postgres --quiet
  1. 事前入力されたコマンドを実行します。

プロンプトが表示されたら API について [承認] をクリックします。

  1. 前に設定したパスワードの入力を求められたら、次のように入力します。
supersecret!

移行先インスタンスの PostgreSQL インタラクティブ コンソールが有効になりました。

Cloud SQL for PostgreSQL インスタンスのデータを確認する

  1. PostgreSQL インタラクティブ コンソールでデータベースを選択するには、次のコマンドを実行します。
\c orders;
  1. パスワードの入力を求められたら、次のように入力します。
supersecret!
  1. distribution_centers テーブルに対してクエリを実行します。
select * from distribution_centers;

(出力)

longitude | latitude | name | id -----------+----------+---------------------------------------------+---- -89.9711 | 35.1174 | Memphis TN | 1 -87.6847 | 41.8369 | Chicago IL | 2 -95.3698 | 29.7604 | Houston TX | 3 -118.25 | 34.05 | Los Angeles CA | 4 -90.0667 | 29.95 | New Orleans LA | 5 -73.7834 | 40.634 | Port Authority of New York/New Jersey NY/NJ | 6 -75.1667 | 39.95 | Philadelphia PA | 7 -88.0431 | 30.6944 | Mobile AL | 8 -79.9333 | 32.7833 | Charleston SC | 9 -81.1167 | 32.0167 | Savannah GA | 10
  1. 次のように入力して、PostgreSQL インタラクティブ コンソールを終了します。
\q

スタンドアロンの移行元データを更新して継続的な移行をテストする

  1. Cloud Shell で次のコマンドを入力して、移行元 PostgreSQL インスタンスに接続します。
export VM_NAME=postgresql-vm export PROJECT_ID=$(gcloud config list --format 'value(core.project)') export POSTGRESQL_IP=$(gcloud compute instances describe ${VM_NAME} \ --zone={{{ project_0.default_zone|(zone) }}} --format="value(networkInterfaces[0].accessConfigs[0].natIP)") echo $POSTGRESQL_IP psql -h $POSTGRESQL_IP -p 5432 -d orders -U migration_admin 注: 上記は、VM インスタンスのスタンドアロン データベースにアクセスする別の方法です。
  1. パスワードの入力を求められたら、次のように入力します。
DMS_1s_cool!
  1. psql で次のコマンドを入力します。
\c orders; insert into distribution_centers values(-80.1918,25.7617,'Miami FL',11);
  1. インタラクティブな psql セッションを終了します。
\q

Cloud SQL PostgreSQL データベースに接続して更新データが移行されたことを確認する

  1. Cloud Shell で次のコマンドを入力して、移行先の Cloud SQL PostgreSQL インスタンスに接続します。
gcloud sql connect postgresql-cloudsql --user=postgres --quiet
  1. 前に設定したパスワードの入力を求められたら、Cloud SQL インスタンスのパスワードを入力します。
supersecret!

移行先インスタンスの PostgreSQL インタラクティブ コンソールが有効になりました。

Cloud SQL for PostgreSQL データベースのデータを確認する

  1. Cloud Shell で、PostgreSQL インタラクティブ コンソールのアクティブなデータベースを選択します。
\c orders;
  1. 前に設定したパスワードの入力を求められたら、次のように入力します。
supersecret!
  1. distribution_centers テーブルに対してクエリを実行します。
select * from distribution_centers;

(出力)

longitude | latitude | name | id -----------+----------+---------------------------------------------+---- -89.9711 | 35.1174 | Memphis TN | 1 -87.6847 | 41.8369 | Chicago IL | 2 -95.3698 | 29.7604 | Houston TX | 3 -118.25 | 34.05 | Los Angeles CA | 4 -90.0667 | 29.95 | New Orleans LA | 5 -73.7834 | 40.634 | Port Authority of New York/New Jersey NY/NJ | 6 -75.1667 | 39.95 | Philadelphia PA | 7 -88.0431 | 30.6944 | Mobile AL | 8 -79.9333 | 32.7833 | Charleston SC | 9 -81.1167 | 32.0167 | Savannah GA | 10 -80.1918 | 25.7617 | Miami FL | 11

スタンドアロンの orders データベースに追加された新しい行が移行されたデータベースに存在することに注意してください。

  1. PostgreSQL インタラクティブ コンソールを終了します。
\q

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 移行元から移行先へのデータの継続的な移行をテストする。

タスク 5. データの読み取りと書き込みのために Cloud SQL をスタンドアロン インスタンスにプロモートする

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[データベースの移行] > [移行ジョブ] をクリックします。

  2. 移行ジョブ名 [vm-to-cloudsql] をクリックして、詳細ページを表示します。

  3. [プロモート] をクリックします。

確認するメッセージが表示されたら、[プロモート] をクリックします。

プロモートが完了すると、ジョブのステータスが [完了] に更新されます。

vm-to-cloudsql という名前の移行ジョブのステータスが [完了] になっています。

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[データベース] > [SQL] をクリックします。

postgresql-cloudsql がスタンドアロン インスタンスになり、データの読み書きが可能になっていることに注意してください。

postgresql-cloudsql という名前のインスタンスにプライマリ インスタンスのラベルが付いています。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 データの読み取りと書き込みのために Cloud SQL for PostgreSQL データベースをスタンドアロン インスタンスにプロモートする。

お疲れさまでした

データベースを 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 の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします