Google Cloud SQL は、クラウド上のリレーショナル MySQL データベースの設定、維持、運用、管理を簡単に行うためのフルマネージド データベース サービスです。
このラボでは、新しいCloud SQL インスタンスを作成し、MySQL コマンドライン インターフェースを使って作成したインスタンスに接続し、さらに新しいデータベースを作成します。
全てのパソコンは Codelab のみの使用となります!
ログイン後https://kiosk.gcplab.me/next17-tokへアクセスしてください。
退出なさる時はログアウトを忘れずにお願いいたします。
講師は、セットアップ済みの既存のプロジェクトで一時アカウントをあなたと共有するので、課金の有効化や本コードラボの実行に伴うコストについては心配いりません。それらのアカウントはすべて、コードラボ終了直後に無効化されます。
ログインに使用する一時ユーザー名/パスワードを講師から受け取った後、Google Cloud Console にログインします。https://console.cloud.google.com/.
割り当てられたプロジェクト ID をメモしてください (上のスクリーンショットでは「next17-t
ok-xxxx」)。以降、本コードラボでは PROJECT_ID と呼びます。
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 インスタンスの削除(任意)を実際に行ってみました。