Cloud SQL を使用してマネージド MySQL データベースを作成する

Google Cloud SQL は、クラウド上のリレーショナル MySQL データベースの設定、維持、運用、管理を容易にするフルマネージド データベース サービスです。

このラボでは、新しい Cloud SQL インスタンスを作成し、MySQL コマンドライン インターフェースを使用して接続します。その後、新しい空のデータベースを作成します。

学習内容

  • Google Cloud Console で Cloud SQL ウェブ UI にアクセスする方法。
  • Google Cloud Console を使用して Cloud SQL インスタンスを作成する方法
  • Google Cloud Console を使用して root パスワードを設定する方法。
  • Cloud Shell を使用して Cloud SQL インスタンスに接続する方法。
  • Google Cloud Console を使用して Cloud SQL インスタンスを削除する方法。

必要なもの

このチュートリアルの利用方法をお選びください。

通読するのみ 通読し、演習を行う

Google Cloud Platform サービスと Firebase の使用経験についてお答えください。

初心者 中級者 上級者

セルフペース型の環境設定

Google アカウント(Gmail または Google Apps)をまだお持ちでない場合は、アカウントを作成する必要があります。Google Cloud Platform Console(console.cloud.google.com)にログインして、新しいプロジェクトを作成します。

2016-02-10 12:45:26.png のスクリーンショット

プロジェクト ID を忘れないようにしてください。プロジェクト ID はすべての Google Cloud プロジェクトを通じて一意の名前にする必要があります(上記の名前はすでに使用されているので使用できません)。以降、このコードラボでは PROJECT_ID と呼びます。

次に、Google Cloud リソースを使用するために、Cloud Console で課金を有効にする必要があります。

この Codelab を実施した場合、費用は数ドルを超えることはありませんが、より多くのリソースを使用する場合や、実行したままにしておくとさらにコストがかかる場合があります(このドキュメントの最後にある「クリーンアップ」セクションをご覧ください)。

Google Cloud Platform の新規ユーザーは 300 ドル分の無料トライアルをご利用いただけます。

Google Cloud Console で、画面の左上にあるメニュー アイコンをクリックします。

下にスクロールして、[ストレージ] サブセクションで [SQL] を選択します。

Cloud SQL ウェブ UI が表示されます。現在 Cloud SQL インスタンスが存在しないプロジェクトを使用している場合は、新しい Cloud SQL インスタンスの作成を促すダイアログ ボックスが表示されます。

すでに 1 つ以上の Cloud SQL インスタンスがあるプロジェクトを使用している場合は、それらのインスタンスのリストが表示されます。

プロジェクトに Cloud SQL インスタンスがない場合は、[インスタンスを作成] ボタンをクリックしてインスタンスを作成します。

すでに 1 つ以上の Cloud SQL インスタンスがあるプロジェクトを使用している場合は、次に示すように、[インスタンス] 画面の [インスタンスを作成] ボタンをクリックします。

いずれの場合も、[インスタンスのタイプを選択する] ページが表示されます。この Codelab では、Cloud SQL 第 2 世代インスタンスを作成します。[第 2 世代を選択] をクリックします。

2ndGenCloudSQLCreate.png

[インスタンスの作成] ページが表示されます。ここでインスタンスの名前を指定する必要があります。この名前はプロジェクト内で一意にする必要がありますが、プロジェクト間で一意にすることはできません。プロジェクトに他の Cloud SQL インスタンスがなければ、この例と同じインスタンス名 codelab-0 を使用できます。[Instance ID] ボックスに「codelab-0」と入力します。この Codelab では、残りの構成はデフォルト値のままにしておきます。

Cloud SQL インスタンスを削除すると、そのインスタンス名は最長 1 週間は再利用できないので注意してください。このプロジェクトをテストの枠を超えて使用する場合は、実際の作業に使用するインスタンス名とは異なるインスタンス名を選択してください。そうしないと、一定期間そのインスタンス名を再利用できません。

2ndGenCloudSQLCreate_2.png

ページの一番下までスクロールし、[作成] を押します。

2ndGenCloudSQLCreate_3.png

[インスタンス] ページが表示されます。このページには、左側にスピナーが表示され、作成中であることを示す新しいインスタンスが表示されています。

2 ~ 3 分でインスタンスが使用可能になり、青いスピナーが緑色のチェックマークに変わります。ページは随時更新してください。

これで Cloud SQL インスタンスを使用できるようになりました。

インスタンス名をクリックしてインスタンスの詳細ページを開き、[アクセス制御] をクリックします。

[アクセス制御] タブで、[ユーザー] を押します。

[ユーザー] タブで、[root パスワードを変更] をクリックします。

[パスワードの変更] ページで新しいパスワードを入力し、[OK] を押します。

Google Cloud Console のプロンプトボタンを押して Google Cloud Shell をアクティブにします。

このプロジェクトで Google Cloud Shell を初めて使用する場合は、Google Cloud Shell 画面が表示されます。[Cloud Shell の起動] をクリックします。

cloudShellWelcome.png

新しい Cloud Shell は、Google Cloud Shell 画面で [Cloud Shell の起動] 画面を押した後、このプロジェクトで初めて使用する場合は Google Cloud Console の下部に表示されます。以前に使用していた場合は、[Google Cloud Shell をアクティブにする] ボタンを押すとすぐに表示されます。

スクリーンショット 2016-03-07 12.18.01.png

以下の gcloud sql コマンドを使用して Cloud SQL インスタンスに接続します。ただし、「codelab-0」は実際のインスタンス名に置き換えます。

gcloud sql connect codelab-0 --user=root

以下のように表示されます。

$ gcloud sql connect codelab-0 --user=root
Whitelisting your IP for incoming connection for 1 minute...done.
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11302
Server version: 5.6.29-google-log (Google)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
Owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

次に示すように、前の手順で設定したパスワードの入力を求められます。これで [ルート] としてログインする MySQL プロンプトが完全に機能するようになりました。これを使用して、次のような SQL ステートメントを入力できます。「codelab」という新しいデータベースを作成できます。

mysql> CREATE DATABASE codelab;
Query OK, 1 row affected (0.00 sec)

クエリが OK を返した場合、インスタンスは動作します。サンプルデータを終了して読み込み、実際のクエリを実行します。

「exit;'」と入力し、Enter キーを押して mysql プロンプトを終了します。

MySQL 公式ドキュメントに記載された従業員サンプル データセットを読み込みます。

まず、スクリプトとデータをダウンロードします。

$ wget https://codeload.github.com/datacharmer/test_db/zip/master -O sampledb.zip
$ unzip sampledb.zip && cd test_db-master

次に、データベースとテーブルを作成し、データを読み込む必要があります。ここでも、Codelab-0 はインスタンス名に置き換えてください。

$ gcloud sql connect codelab-0 --user=root < employees.sql

これで、データをクエリできるようになりました。以下にサンプルクエリをいくつか紹介します。クエリを自分で作成することもできます。db スキーマに慣れるには、employees.sql ファイルをご覧ください。まず SQL プロンプトにログインして従業員データベースに切り替えます。ここでも、codelab-0 は実際のインスタンス名に置き換えます。

$ gcloud sql connect codelab-0 --user=root
mysql> USE employees;
Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT avg(s.salary) avg_salary_by_hire_year, YEAR(e.hire_date) FROM employees e, salaries s WHERE e.emp_no = s.emp_no GROUP BY YEAR(e.hire_date);
+-------------------------+-------------------+
| avg_salary_by_hire_year | YEAR(e.hire_date)|
+-------------------------+-------------------+
|              66966.7550 |              1985 |
|              66187.3453 |              1986 |
...
16 rows in set (2.70 sec)

mysql> SELECT de.dept_no, sum(s.salary) sum_salaries_per_department FROM employees e, salaries s, dept_emp de WHERE e.emp_no = de.emp_no AND e.emp_no = s.emp_no GROUP BY de.dept_no;
+---------+-----------------------------+
| dept_no | sum_salaries_per_department|
+---------+-----------------------------+
| d001    |                 13725425266 |
| d002    |                 11650834677 |
...
+---------+-----------------------------+
9 rows in set (4.22 sec)

mysql> exit;

サンプルの従業員データセットに対するクエリが完了したら、「exit'」コマンドを使用して mysql プロンプトを終了します。

この手順は省略可能です。引き続き Cloud SQL インスタンスでテストを行いたい場合は、このインスタンスを削除する必要はありません。ただし、使用しているプロジェクトは引き続きインスタンスに対して課金されます。このインスタンスが不要になったら、この時点で削除して課金が発生しないようにする必要があります。

Cloud SQL インスタンスを削除すると、そのインスタンス名は最長 1 週間は再利用できないので注意してください。

Cloud SQL インスタンスを削除する方法は 2 つあります。

1)Cloud Shell 環境で gcloud を使用する。ここでも、Codelab-0 はインスタンス名に置き換えてください。

$ gcloud sql instances delete codelab-0
All of the instance data will be lost when the instance is deleted.

Do you want to continue (Y/n)?  Y

Deleting Cloud SQL instance...done.
Deleted
$

または

2)左上にある [SQL] をクリックして、Cloud SQL インスタンス ページに戻ります。

削除するインスタンスの横にあるプルダウン メニューを開いて、[Delete] を選択します。

インスタンスを削除すると元に戻すことができません。そのインスタンスのデータは復元できません。誤ってインスタンスが削除されるのを防ぐには、確認ダイアログにインスタンス名を入力して削除を確認する必要があります。

インスタンス名を入力して、[削除] を押します。

新しい Cloud SQL インスタンスを作成して root パスワードを構成し、空のデータベースを作成して、Cloud SQL インスタンスを必要に応じて削除しました。

学習した内容

  • Google Cloud Console を使用した Cloud SQL インスタンスの作成
  • Google Cloud Console を使用して SQL の root パスワードを設定する。
  • mysql クライアントを使用してデータベースに接続する。
  • mysql プロンプトで新しい MySQL データベースを作成します。
  • Cloud SQL インスタンスを削除する。

詳細