データベースの作成と管理

ここでは、Cloud SQL インスタンス上の MySQL データベースの作成、一覧取得、削除について説明します。

新しく作成されたインスタンスには、次の 4 つのシステム データベースがあります。

  • information_schema: データベース メタデータ(MySQL サーバーに関する情報)へのアクセスを提供します。
  • mysql: システム スキーマ。MySQL サーバーの実行時に必要な情報を格納するテーブルが含まれています。
  • performance_schema: MySQL サーバーの実行を低レベルでモニタリングする機能。
  • sys: DBA とデベロッパーがパフォーマンス スキーマによって収集されたデータの解釈に役立つ一連のオブジェクトが含まれています。

MySQL データベースの詳細については、MySQL のドキュメントをご覧ください。

始める前に

ここで説明するタスクの前に、次のことを行っておく必要があります。

  • Cloud SQL インスタンスを作成しておきます。詳細については、インスタンスの作成をご覧ください。

MySQL クライアントを使用してデータベースを作成または管理する場合は、次のことを行っておく必要があります。

Cloud SQL インスタンスにデータベースを作成する

コンソール

  1. Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [データベース] を選択します。
  4. [データベースを作成] をクリックします。
  5. [データベースを作成] ダイアログで、データベースの名前と、必要に応じて文字セットと照合を指定します。

    文字セットと照合順序の詳細については、文字セット、照合、Unicode をご覧ください。

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

gcloud

リファレンス情報については、gcloud sql databases create をご覧ください。

文字セットと照合順序の詳細については、文字セット、照合順序、Unicode をご覧ください。

gcloud sql databases create DATABASE_NAME \
--instance=INSTANCE_NAME \
[--charset=CHARSET] \
[--collation=COLLATION]

Terraform

データベースを作成するには、Terraform リソースを使用します。

resource "google_sql_database" "database" {
  name     = "my-database"
  instance = google_sql_database_instance.instance.name
}

変更を適用する

Google Cloud �������ェクト�� Terraform 構成を適用するには、次のセクションの手順を完了します。

Cloud Shell を準備する

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。

ディレクトリを準備する

Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。

  1. Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は .tf にする必要があります(例: main.tf)。このチュートリアルでは、このファイルを main.tf とします。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。

    新しく作成した main.tf にサンプルコードをコピーします。

    必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。

  3. 環境に適用するサンプル パラメータを確認し、変更します。
  4. 変更を保存します。
  5. Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    terraform init

    最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

  3. Google Cloud プロジェクトを開いて結���を表示��ます。 Google Cloud �������ールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

変更を削除する

変更を削除するには、次の手順を行います。

  1. 削除の保護を無効にするには、Terraform 構成ファイルで deletion_protection 引数を false に設定します。
    deletion_protection =  "false"
  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、更新された Terraform 構成を適用します。
    terraform apply
  1. 次のコマンドを実行します。プロンプトで「yes」と入力して、以前に Terraform 構成で適用されたリソースを削除します。

    terraform destroy

REST v1

以下のリクエストでは、databases:insert メソッドを使用して、指定したインスタンスに新しいデータベースを作成します。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID
  • database-name: Cloud SQL インスタンス内のデータベースの名前

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/databases

リクエストの本文(JSON):

{
  "project": "project-id",
  "instance": "instance-id",
  "name": "database-name"
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

REST v1beta4

以下のリクエストでは、databases:insert メソッドを使用して、指定したインスタンスに新しいデータベースを作成します。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID
  • database-name: Cloud SQL インスタンス内のデータベースの名前

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/databases

リクエストの本文(JSON):

{
  "project": "project-id",
  "instance": "instance-id",
  "name": "database-name"
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

mysql クライアント

リファレンス情報については、MySQL のドキュメントの CREATE DATABASE をご覧ください。

文字セットと照合順序の詳細については、文字セット、照合、Unicode をご覧ください。

CREATE DATABASE database_name
  [[CHARACTER SET charset_name][COLLATE collation_name]];

データベースの一覧を表示する

インスタンス上のすべてのデータベースの一覧を取得するには:

コンソール

  1. Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. 左側のメニューから、[データベース] をクリックします。[データベース] ページには、データベースが照合タイプ、文字セット、データベース タイプとともに一覧表示されます。

gcloud

リファレンス情報については、gcloud sql databases list をご覧ください。

gcloud sql databases list \
--instance=INSTANCE_NAME

REST v1

次のリクエストでは、databases:list メソッドを使用して、インスタンスのデータベースを一覧表示します。

API を使用してデータベースを一覧表示すると、コンソールでは表示されない追加のテンプレート データベース�����ステム データベースが表示され��す。システム データベースの削除や管理を行うことはできません。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/databases

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

REST v1beta4

次のリクエストでは、databases:list メソッドを使用して、インスタンスのデータベースを一覧表示します。

API を使用してデータベースを一覧表示すると、コンソールでは表示されない追加のテンプレート データベースとシステム データベースが表示されます。システム データベースの削除や管理を行うことはできません。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/databases

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

mysql クライアント

リファレンス情報については、MySQL のドキュメントの SHOW DATABASES をご覧ください。

SHOW DATABASES;

データベースを削除する

Cloud SQL インスタンスでデータベースを削除するには:

コンソール

  1. Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. 左側のメニューから、[データベース] をクリックします。
  4. データベースのリストで削除するデータベースを選択し、ごみ箱アイコンをクリックします。
  5. [データベースの削除] ダイアログでデータベースの名前を入力し、[削除] をクリックします。

gcloud

リファレンス情報については、gcloud sql databases delete をご覧ください。

gcloud sql databases delete DATABASE_NAME \
--instance=INSTANCE_NAME

REST v1

以下のリクエストでは、databases:delete メソッドを使用して、指定されたデータベースを削除します。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID
  • database-name: Cloud SQL インスタンス内のデータベースの名前

HTTP メソッドと URL:

DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/databases/database-name

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

REST v1beta4

以下のリクエストでは、databases:delete メソッドを使用して、指定されたデータベースを削除します。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID
  • database-name: Cloud SQL インスタンス内のデータベースの名前

HTTP メソッドと URL:

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/databases/database-name

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

mysql クライアント

リファレンス情報については、MySQL のドキュメントの DROP DATABASE をご覧ください。

DROP DATABASE [database_name];

次のステップ

使ってみる

Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Cloud SQL のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

Cloud SQL の無料トライアル