Cloud SQL によるマネージド MySQL データベースの作成

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

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

学習内容

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

必要なもの

このチュートリアルをどのように使用されますか?

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

Google Cloud Platform サービスと Firebase のご利用経験についてどのように評価されますか?

初心者 中級者 上級者

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

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

Screenshot from 2016-02-10 12:45:26.png

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

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

この Codelab の操作をすべて行っても、費用は数ドル程度です。ただし、その他のリソースを使いたい場合や、実行したままにしておきたいステップがある場合は、追加コストがかかる可能性があります(このドキュメントの最後にある「クリーンアップ」セクションをご覧ください)。

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

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

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

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

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

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

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

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

2ndGenCloudSQLCreate.png

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

Cloud SQL インスタンスを削除すると、そのインスタンス名は 1 週間ほど再利用できません。このプロジェクトをテスト以外の目的で使用する場合は、実際の作業で使用するインスタンス名とは異なるインスタンス名を選択してください。そうしないと、そのインスタンス名を一定期間再利用できなくなる可能性があります。

2ndGenCloudSQLCreate_2.png

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

2ndGenCloudSQLCreate_3.png

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

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

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

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

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

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

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

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

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

cloudShellWelcome.png

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

Screen Shot 2016-03-07 at 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 プロンプトが「root」としてログインした状態で表示されます。これを使用して、次のような 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 プロンプトにログインして、employee データベースに切り替えます。インスタンス名が異なる場合は、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 インスタンスのページに戻ります。

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

インスタンスを削除すると、元に戻すことはできません。そのインスタンスのデータは復元できません。誤って間違ったインスタンスを削除しないように、確認ダイアログでインスタンス名を入力して削除を確定する必要があります。

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

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

学習した内容

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

詳細