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

このラボでは、新しいCloud SQL インスタンスを作成し、MySQL コマンドライン インターフェースを使って作成したインスタンスに接続し、さらに新しいデータベースを作成します。

学習すること

必要になるもの

チュートリアルの使用目的を教えてください

通読のみ 通読して、演習を行う

Google Cloud Platform のサービスや Firebase の使用経験を教えてください

初心者 中級者 上級者

自分のペースで進める環境のセットアップ

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

プロジェクト ID を覚えておいてください。この ID は、すべての Google Cloud プロジェクトに使用する一意の名前です(上記の名前は既に使用されているので、実際には使用できません)。

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

このコードラボの演習を進めても、課金額は数セント程度です。ただし、説明に従って Cloud SQL インスタンスを削除しないと、それ以上の金額が課金される可能性があります(本書の「Cloud SQL インスタンスの削除」の項を参照してください)。Google Cloud SQL の料金はこちらでご覧いただけます。

Google Cloud Platform の新規ユーザーは$300 相当の無料トライアルをお試しいただけます。

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

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

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

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

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

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

いずれの場合も、[インスタンス タイプの選択] ページが開きます。このコードラボでは、Cloud SQL 第 2 世代のインスタンスを作成します。[第 2 世代を選択] をクリックします。

[インスタンスの作成] ページが開きます。このページでは、ご自分のインスタンス名を指定する必要があります。インスタンス名はご自分のプロジェクト内で一意でなければなりませんが、プロジェクト全体で一意である必要はありません。したがって、ご自分のプロジェクト内に他の Cloud SQL インスタンスが存在しない場合は、今回の例にあるような「codelab-0」という同じインスタンス名を使用できます。インスタンス ID の欄に「codelab-0」と入力します。このコードラボでは、残りの設定はデフォルト値のままにしておいて構いません。

Cloud SQL インスタンスを削除すると、削除したインスタンスと同じインスタンス名は削除してから約 7 日間は再利用できませんのでご注意ください。実験を終えたあともこのプロジェクトを使用する予定の場合は、実際に使用することになるインスタンス名は避け、別のインスタンス名を使用してください。この時点で実際に使用する予定のインスタンス名を使用してしまうと、一定期間同じインスタンス名が使用できなくなることがあります。

デフォルト ユーザー「root」のパスワードを作成します。ページの一番下までスクロールして、[作成] を押します。

[インスタンス] ページが開き、新たに作成したインスタンスが表示されます。作成中インスタンスの左側には、スピナーが表示されます。

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

これで Cloud SQL インスタンスが使用可能になりました。

Google Cloud Console でプロンプト ボタンを押して、Google Cloud Shell を有効にします。

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

このプロジェクトで Google Cloud Shell を初めて使用する場合は、 [Google Cloud Shell] 画面で [CLOUD SHELL の起動] を押した後に、新しい Cloud Shell が Google Cloud Console の一番下に表示されます。これまでに使用したことがある場合は、 [Google Cloud Shell を有効にする] ボタンを押した直後に表示されます。

以下に示す 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 5 minutes...done.
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11302
Server version: 5.7.14-google-log (Google)

Copyright (c) 2000, 2017, 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> 

上記のとおり、前の手順で設定したパスワードの入力を求められます。パスワードを入力すると、「root」としてサインインした状態で MySQL プロンプトが完全に機能します。これを利用して、以下のような SQL 文を入力すると、「codelab」という名称の新しいデータベースを作成できます。

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

クエリに対して OK が返されれば、そのインスタンスは機能しています。では、mysqlプロンプトを終了してからサンプル データを読み込み、実際のクエリをいくつか実行してみましょう。

「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 [https://www.googleapis.com/sql/v1beta4/projects/test-240616-01/instances/codelab-0].
$

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

このコードラボでは、Cloud SQL インスタンスの新規作成、root パスワードの設定、空のデータベースの作成、および Cloud SQL インスタンスの削除(任意)を実際に行ってみました。

学習したこと

知識を深めるには