別のプラットフォームから Cloud SQL for PostgreSQL にワークロードを移行する場合、多くの場合、 Google Cloud コンソールを使用して、以前の環境からエクスポートした SQL ダンプファイルからデータをインポートします。
このチュートリアルでは、必要な Google Cloud リソースを作成し、SQL データベースを Cloud SQL for PostgreSQL インスタンスにインポートする方法について説明します。このチュートリアルでは、プライベート サービス アクセスを使用した Virtual Private Cloud(VPC)ネットワークの使用や、Cloud SQL インスタンスのプライベート IP の有効化など、Cloud SQL for PostgreSQL への移行時のベスト プラクティスについて説明します。
手順を進める際は、特に指定がない限り、設定のデフォルト値をそのまま使用してください。
目標
- サンプル SQL ダンプファイルをダウンロードします。
- プライベート サービス アクセスを使用して新しい Virtual Private Cloud ネットワークを作成します。
- Cloud Storage バケットを作成し、SQL ダンプファイルをアップロードします。
- プライベート IP 用に構成された Cloud SQL for PostgreSQL インスタンスを作成します。
- ユーザーを作成します。
- 移行先データベースを作成します。
- ダンプファイルから新しいデータベースにインポートします。
- 構造を表示してクエリを実行し、データベースが正常にインポートされたことを確認します。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL, Cloud SQL Admin, Compute Engine, Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL, Cloud SQL Admin, Compute Engine, Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Cloud SQL 管理者(
roles/cloudsql.admin) - ストレージ管理者(
roles/storage.admin) -
Compute ネットワーク管理者(
roles/compute.networkAdmin) Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] フィールドに「
tutorial-network」と入力します。[サブネット作成モード] で [カスタム] を選択します。
[名前] フィールドに「
tutorial-subnet」と入力します。近くのリージョンを選択します。
[IPv4 範囲] に「
10.0.0.0/24」と入力します。[限定公開の Google アクセス] で [オン] を選択します。
[完了] をクリックします。
ページの下部にある [作成] をクリックします。
- [VPC ネットワーク] 画面で、[tutorial-network] をクリックします。
- tutorial-network のメニューバーで、[プライベート サービス アクセス] をクリックします。
- [サービスに割り当てられた IP 範囲] をクリックします。
- [IP 範囲の割り当て] をクリックします。
- [名前] に「
tutorial-range」と入力します。 - [IP アドレス範囲] で [カスタム] を選択します。
- [範囲] フィールドに「
192.168.0.0/20」と入力します。 - [割り当て] をクリックします。
- サブメニューで、[サービスへのプライベート接続] をクリックします。
- [接続を作成] をクリックします。
- [割り当て] プルダウンで、[tutorial-range] を選択します。
- [接続] をクリックします。1 ~ 2 分後に、プライベート接続が正常に作成されたことを知らせるメッセージが Google Cloud コンソールに表示されます。
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
- [作成] をクリックします。
- バケット名には、小文字、数字、ハイフンで構成されるグローバルに一意の名前を作成します。名前を生成するには、random.org/strings などのランダム文字列ジェネレータを使用することをおすすめします。選択した名前をメモします。
- [続行] をクリックします。
- [ロケーション タイプ] で [リージョン] を選択します。これは最も低コストのオプションです。
- サブネットに選択したのと同じリージョンを選択します。Google Cloud リソースを同じリージョンに配置すると、レイテンシが短縮され、速度が向上し、データ転送コストが削減され、ネットワーキングが簡素化されます。
- [続行] をクリックします。
- [作成] をクリックします。
- ダイアログが表示されたら、[このバケットに対する公開アクセス禁止を適用する] を選択したままにして、[確認] をクリックします。
- [オブジェクト] タブで、[アップロード] をクリックし、[ファイルをアップロード] をクリックします。
countries-postgres.sqlファイルに移動して選択します。- [開く] をクリックします。Cloud Storage はダンプファイルをバケットにアップロードします。
- Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] ページに移動 - [インスタンスを作成] をクリックします。
- [PostgreSQL を選択] をクリックします。
- [Cloud SQL のエディションの選択] で、[Enterprise] を選択します。
- [エディションのプリセット] で、[サンドボックス] を選択します。
- [インスタンス ID] に「
tutorial-instance」と入力します。 - デフォルトのユーザー アカウントのパスワードを選択して入力し、後で使用できるように保存します。
- サブネットとバケットに選択したのと同じリージョンを選択します。
- [ゾーンの可用性] で [シングルゾーン] を選択します。
- [構成オプションを表示] を開きます。
- [接続] を開きます。
- [パブリック IP] をクリアします。
- [プライベート IP] を選択します。
- [ネットワーク] プルダウンから [tutorial-network] を選択します。これにより、新しい Cloud SQL インスタンスが、以前に作成したプライベート ネットワークに配置されます。
- [インスタンスを作成] をクリックし、インスタンスが初期化されて起動するまで待ちます。初期化プロセスには 5 分以上かかることがあります。
- SQL ナビゲーション メニューで [ユーザー] をクリックします。
- [ユーザー アカウントを追加] をクリックします。
- 表示されたペインで、[組み込み認証] を選択します。
- [ユーザー名] フィールドに「
tutorial-user」と入力します。 - この新しいユーザーのパスワードを入力します。このパスワードは後で使用できるように保存してください。
- [追加] をクリックします。
- SQL ナビゲーション メニューで [データベース] をクリックします。
- [データベースを作成] をクリックします。
- [Database Name] に「
countries」と入力します。 - [作成] をクリックします。
- SQL ナビゲーション メニューで [概要] をクリックします。
- 概要ページで、[インポート] をクリックします。
- [ファイル形式] で [SQL] を選択します。
- [ソースファイルを選択] で、[Google Cloud Storage からファイルを選択] を選択します。
- [参照] をクリックします。
- 先ほど作成したストレージ バケットを開きます。
- [countries-postgres.sql] をクリックします。
- [選択] をクリックします。
- [宛先] セクションで、[データベース] プルダウンをクリックし、[countries] を選択します。
- [インポート] をクリックします。
- SQL ナビゲーション メニューで [Cloud SQL Studio] をクリックします。ログイン ダイアログが表示されます。
- [データベース] プルダウンで、[countries] を選択します。
- [組み込みデータベース認証] を選択します。
- [ユーザー] プルダウンで、[tutorial-user] を選択します。
- [パスワード] フィールドに、ユーザーを追加するセクションでユーザーのために作成したパスワードを入力します。
- [認証] をクリックします。Cloud SQL Studio が開きます。
- [エクスプローラ] ペインで、
countriesデータベースを調べて、データベースにcapitalsとcountry_codesの 2 つのテーブルがあることを確認します。 - [無題のクエリ] をクリックして、クエリエディタを開きます。
次のコードをクエリエディタに貼り付けます。
SELECT "capitals"."country_capital", "country_codes"."country_name" FROM "capitals" JOIN "country_codes" ON "capitals"."alpha_2_code" = "country_codes"."alpha_2_code" ORDER BY "capitals"."country_capital";[実行] をクリックします。
- リソースを含むプロジェクトを削除する
- プロジェクトは残して個々のリソースを削除します。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- SQL ナビゲーション メニューで [概要] をクリックします。
- [編集] をクリックします。
- [データ保護] セクションを開きます。
- [インスタンスの削除からの保護] で、すべてのオプションの選択を解除します。
- [保存] をクリックします。オペレーションが完了すると、[削除] を選択できるようになります。
- [削除] をクリックします。ダイアログが表示されます。
- [インスタンス ID] フィールドに「
tutorial-instance」と入力します。 - [削除] をクリックします。
- メインの Google Cloud コンソールのナビゲーション メニューで、[Cloud Storage] > [バケット] に移動します。
- 前に作成したバケットの名前の横にあるチェックボックスをオンにします。
- [削除] をクリックします。
- ダイアログで「
DELETE」と入力して削除を確認し、[削除] をクリックします。 - メイン ナビゲーション メニューで、[VPC ネットワーク] > [VPC ネットワーク ピアリング] に移動します。
- VPC ネットワーク tutorial-network を使用するピアリング接続の横にあるチェックボックスをオンにします。
- [削除] をクリックします。
- ダイアログで [削除] をクリックして確定します。
- [VPC ネットワーク] メニューで、[VPC ネットワーク] をクリックします。
- [tutorial-network] をクリックして、詳細ページを開きます。
- [VPC ネットワークを削除] をクリックします。
- ダイアログで「
tutorial-network」と入力し、[削除] をクリックして削除を確定します。 - データのインポートとエクスポートに関するベスト プラクティス。
- SQL ダンプファイルを使用したエクスポートとインポート。
- VPC ネットワーク
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センターをご覧ください。
必要なロール
このチュートリアルを完了するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
サンプル データベース ダンプファイルを取得する
このチュートリアルでは、国コードと世界の首都を含む小さなサンプル データベースを使用します。
countries データベースの SQL ファイルをローカル環境にダウンロードします。countries-postgres.sql
プライベート サービス アクセスを使用してネットワークを作成する
残りのリソースを作成する前に、サービスを実行する VPC ネットワークを作成します。プライベート サービス アクセスを使用すると、内部 IPv4 アドレスを使用して外部ネットワークと Cloud SQL for PostgreSQL の間にプライベート接続を確立することで、Cloud SQL データベースへのアクセスを制限できます。
VPC ネットワークの作成プロセスが完了したら、ネットワークのプライベート サービス アクセスを構成できます。
Cloud Storage バケットを作成する
次に、先ほどダウンロードした SQL ダンプファイルを格納する Cloud Storage バケットを作成します。Cloud SQL インポート ツールでは、ダンプファイルがバケットにあることを想定しています。Cloud Storage バケットには、グローバルに一意の名前を付ける必要があります。
新しいバケットの [バケットの詳細] ページが開き、[オブジェクト] ペインが選択されています。
ダンプファイルをバケットにアップロードする
先ほどダウンロードしたサンプル SQL ダンプファイルをバケットにアップロードします。
Cloud SQL インスタンスを作成する
次の設定を使用して、 Google Cloud コンソールで Cloud SQL インスタンスを作成します。その他の設定はすべてデフォルトのままにします。インポート プロセスでプライベート IP を有効にする必要はありませんが、本番環境のワークロードにプライベート IP を使用することをおすすめします。
ユーザーを追加する
データベースの読み取りまたは書き込みを行うには、root ユーザーとは異なるデータベース ユーザーを作成する必要があります。
移行先データベースを作成する
インポート ワークフローでは、インポート先の宛先データベースを選択する必要があるため、空のデータベースを作成する必要があります。
ダンプファイルからインポートする
これで、Cloud Storage バケットにアップロードした countries-postgres.sql ダンプファイルを使用して countries データベースをインポートする準備ができました。
インポート プロセスが完了し、countries データベースが Cloud SQL for PostgreSQL にインポートされると、成功メッセージが表示されます。
Cloud SQL for PostgreSQL でインポートされたデータを検証する
インポート オペレーションが完了したら、Cloud SQL Studio を使用してデータベースに接続し、テーブルのリストを調べて、データに対してテストクエリを実行することで、データベースがインポートされたことを確認できます。
Cloud SQL Studio に対する認証
前に作成したユーザー アカウントを使用して、Cloud SQL Studio を使用して新しいデータベースに接続します。
テーブルを表示してクエリを実行する
結果ペインに、世界の首都とその国がアルファベット順に表示されます。
クリーンアップ
このチュートリアルで使用したリソースについて Google Cloud アカウントに課金されないようにするには、次のいずれかを行います。
プロジェクトを削除する
リソースを個別に削除する
プロジェクトを残して課金されないようにするには、チュートリアルで作成した Cloud SQL インスタンス、Cloud Storage バケット、VPC ネットワークを削除します。
Cloud SQL インスタンスを削除する
まず、削除保護を無効にしてから、チュートリアルの Cloud SQL インスタンスを削除します。
Cloud Storage バケットを削除する
次に、ストレージ バケットとその内容を削除します。
VPC ネットワークを削除する
VPC ネットワーク内のリソースを削除したので、ネットワークを削除する準備が整いました。VPC ネットワークを削除する前に、VPC ネットワークの作成時に自動的に作成されたピアリング接続を削除する必要があります。
ピアリング接続が削除されたので、VPC ネットワークを削除できます。