PostgreSQL ツールを使用して PostgreSQL から AlloyDB に移行する
ラボ
20分
universal_currency_alt
クレジット: 1
show_chart
入門
info
このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。
GSP1085
概要
AlloyDB for PostgreSQL は、特に要求の厳しいエンタープライズ データベース ワークロード向けに構築された PostgreSQL 互換のフルマネージド データベース サービスです。AlloyDB は、Google の強みと、特に人気の高いオープンソース データベース エンジンの 1 つである PostgreSQL を組み合わせ、優れたパフォーマンス、スケーリング、可用性を実現しています。
このラボでは、ネイティブの PostgreSQL ツールを使用して、スタンドアロンの PostgreSQL データベース(仮想マシン上で実行)を AlloyDB for PostgreSQL に移行します。AlloyDB でサポートされているデータベース移行方法の一つが、DMP ファイルのインポートです。DMP ファイルの作成には、カスタム形式またはディレクトリ形式の設定で pg_dump ツールを使用する必要があります。また、DMP のインポートには、pg_restore ツールを使用する必要があります。
演習内容
このラボでは、次のタスクの実行方法について学びます。
- 移行元インスタンスのデータを確認する
- pg_dump を使用してデータベースの DMP ファイルを作成する
- pg_restore を使用して DMP ファイルをインポートする
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
- ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。
左側の [ラボの詳細] ペインには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] ペインでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] ペインでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
-
ウィンドウで次の操作を行います。
- Cloud Shell 情報ウィンドウで操作を進めます。
- Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、 が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
- [承認] をクリックします。
出力:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. 移行元インスタンスのデータを確認する
-
ナビゲーション メニュー(
)で、[Compute Engine] の下にある [VM インスタンス] をクリックします。
-
pg14-source という名前のインスタンスの [接続] 列で、[SSH] をクリックしてターミナル ウィンドウを開きます。
-
次のコマンドを使用して、PostgreSQL(psql)クライアントを起動します。
sudo -u postgres psql
- 次のような psql ターミナル プロンプトが表示されます。
psql (14.5 (Debian 14.5-1.pgdg110+1))
Type "help" for help.
- 次の SQL コマンドを入力して実行し、postgres データベースの HR 関連のテーブルを確認します。
\dt
List of relations
Schema | Name | Type | Owner
--------+-------------+-------+----------
public | countries | table | postgres
public | departments | table | postgres
public | employees | table | postgres
public | jobs | table | postgres
public | locations | table | postgres
public | regions | table | postgres
(6 rows)
- 次のクエリを実行して、各テーブルの行数を特定します。
select count (*) as countries_row_count from countries;
select count (*) as departments_row_count from departments;
select count (*) as employees_row_count from employees;
select count (*) as jobs_row_count from jobs;
select count (*) as locations_row_count from locations;
select count (*) as regions_row_count from regions;
- ソーステーブルの行数は次のとおりです。
| 名前 |
行数 |
| countries |
25 |
| departments |
27 |
| employees |
107 |
| jobs |
19 |
| locations |
23 |
| regions |
4 |
- 「\q」と入力して psql クライアントを終了します。
タスク 2. pg_dump を使用してデータベースの DMP ファイルを作成する
-
pg_dump ツールは、すべての PostgreSQL インストール環境にデフォルトでインストールされています。pg14-source ターミナルで、先ほど確認した HR テーブルを含む postgres データベースの DMP ファイルを作成します。シェル プロンプトで次のコマンドを実行します。注: 「-Fc」フラグは、カスタム形式の DMP ファイルを指定するフラグです。
sudo -u postgres pg_dump -Fc postgres > pg14_source.DMP
- ディレクトリをブラウジングして、DMP ファイルのサイズなどの詳細を確認します。
ls -l -h pg14_source.DMP
-rw-r--r-- 1 student-03-171e0d8475af google-sudoers 13K Aug 27 21:19 pg14_source.DMP
- 定期的なデータベースのエクスポートやインポートをシミュレートするには、DMP ファイルを Cloud Storage バケットに移行します。ラボを開始したときに、Qwiklabs のプロジェクト ID にちなんだ名前のバケットが作成されています。
gsutil cp pg14_source.DMP gs://{{{primary_project.project_id|Project ID}}}/pg14_source.DMP
- [進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
データベースの DMP ファイルを Cloud Storage にアップロードする
タスク 3. pg_restore を使用して DMP ファイルをインポートする
-
ラボを開始したときに、AlloyDB クラスタとインスタンスがプロビジョニングされています。Cloud コンソールのナビゲーション メニュー(
)で、[データベース] から [AlloyDB for PostgreSQL]、[クラスタ] の順にクリックし、クラスタの詳細を確認します。
-
クラスタの名前は lab-cluster、インスタンスの名前は lab-instance です。
-
インスタンス セクションのプライベート IP アドレスをメモしてください。後のステップで値を貼り付けられるよう、このプライベート IP アドレスをテキスト ファイルにコピーしておきます。インスタンスが完全に作成され、初期化されるまでには少し時間がかかります。[ステータス] が [準備完了] になるまで待ってから、次のステップに進んでください。
-
ラボを開始したときに、PostgreSQL クライアントを含む alloydb-client という名前の VM がプロビジョニングされています。このインストール環境には、データベース復元ツール pg_restore が含まれています。
-
ナビゲーション メニュー(
)で、[Compute Engine] の下にある [VM インスタンス] をクリックします。
-
alloydb-client という名前のインスタンスの [接続] 列で、[SSH] をクリックしてターミナル ウィンドウを開きます。
-
次の環境変数を設定します。ALLOYDB_ADDRESS は、AlloyDB インスタンスのプライベート IP アドレスに置き換えます。
export ALLOYDB=ALLOYDB_ADDRESS
- 次のコマンドを実行して、AlloyDB インスタンスのプライベート IP アドレスを AlloyDB クライアント VM に保存し、ラボ全体で保持されるようにします。
echo $ALLOYDB > alloydbip.txt
- 次のコマンドを使用して、PostgreSQL(psql)クライアントを起動します。クラスタの作成時に指定した postgres ユーザーのパスワード(Change3Me)を入力するよう求められます。
psql -h $ALLOYDB -U postgres
- 次のコマンドを実行して、現在 postgres データベースが空であることを確認します。
\dt
Did not find any relations.
-
「\q」と入力して psql クライアントを終了します。
-
Cloud Storage バケットの DMP ファイルをローカル ディレクトリにダウンロードします。
gsutil cp gs://{{{primary_project.project_id|Project ID}}}/pg14_source.DMP pg14_source.DMP
- 次のコマンドを実行して、すべての extension ステートメントをコメントアウトする TOC ファイルを作成します。
pg_restore -l pg14_source.DMP | sed -E 's/(.* EXTENSION )/; \1/g' > pg14_source_toc.toc
- 次に、復元コマンドを実行して、HR テーブルを読み込みます。postgres ユーザーのパスワード(Change3Me)の入力を求められます。
pg_restore -h $ALLOYDB -U postgres \
-d postgres \
-L pg14_source_toc.toc \
pg14_source.DMP
- PostgreSQL(psql)クライアントを再度起動します。postgres ユーザーのパスワード(Change3Me)の入力を求められます。
psql -h $ALLOYDB -U postgres
- 次のコマンドを実行して、テーブルが読み込まれたことを確認します。
\dt
List of relations
Schema | Name | Type | Owner
--------+-------------+-------+----------
public | countries | table | postgres
public | departments | table | postgres
public | employees | table | postgres
public | jobs | table | postgres
public | locations | table | postgres
public | regions | table | postgres
(6 rows)
- 次のクエリを実行して、移行されたテーブルの行数を特定します。値は、移行元インスタンスのクエリ出力と一致します。
select count (*) as countries_row_count from countries;
select count (*) as departments_row_count from departments;
select count (*) as employees_row_count from employees;
select count (*) as jobs_row_count from jobs;
select count (*) as locations_row_count from locations;
select count (*) as regions_row_count from regions;
- [進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
データベースの DMP ファイルのインポートを確認する
お疲れさまでした
これで、ネイティブの PostgreSQL ツールを使用して、スタンドアロンの PostgreSQL データベース(仮想マシン上で実行)を AlloyDB for PostgreSQL に移行できました。
マニュアルの最終更新日: 2024 年 4 月 26 日
ラボの最終テスト日: 2023 年 8 月 2 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。