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

ここでは、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. 以前に Terraform 構成で適用されたリソースを削除するには、次のコマンドを実行して、プロンプトに「yes」と入力します。

    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]];

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

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

Console

  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 インスタンスでデータベースを削除するには、次のようにします。

Console

  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 の無料トライアル