สร้างฐานข้อมูล MySQL ที่มีการจัดการด้วย Cloud SQL

Google Cloud SQL คือบริการฐานข้อมูลที่มีการจัดการครบวงจรที่ช่วยให้คุณตั้งค่า ดูแลรักษา จัดการ และดูแลฐานข้อมูล SQL แบบสัมพัทธ์ในระบบคลาวด์ได้อย่างง่ายดาย

ในห้องทดลองนี้ เราจะสร้างอินสแตนซ์ Cloud SQL ใหม่ที่ว่างเปล่า เชื่อมต่อกับอินสแตนซ์นี้โดยใช้อินเทอร์เฟซบรรทัดคําสั่ง MySQL และสร้างฐานข้อมูลใหม่ที่ว่างเปล่า

สิ่งที่คุณจะได้เรียนรู้

  • วิธีเข้าถึง UI ทางเว็บของ Cloud SQL ใน Google Cloud Console
  • วิธีสร้างอินสแตนซ์ Cloud SQL โดยใช้ Google Cloud Console
  • วิธีตั้งรหัสผ่านรากโดยใช้ Google Cloud Console
  • วิธีเชื่อมต่อกับอินสแตนซ์ Cloud SQL ผ่าน Cloud Shell
  • วิธีลบอินสแตนซ์ Cloud SQL โดยใช้ Google Cloud Console

สิ่งที่ต้องมี

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox

คุณจะใช้บทแนะนํานี้อย่างไร

อ่านจบเท่านั้น อ่านและตอบแบบฝึกหัด

คุณจะให้คะแนนประสบการณ์ในการใช้บริการ Google Cloud Platform และ Firebase อย่างไร

มือใหม่ ปานกลาง เชี่ยวชาญ

การตั้งค่าสภาพแวดล้อมด้วยตนเอง

หากยังไม่มีบัญชี Google (Gmail หรือ Google Apps) คุณต้องสร้างบัญชี ลงชื่อเข้าใช้คอนโซล Google Cloud Platform (console.cloud.google.com) และสร้างโปรเจ็กต์ใหม่ ดังนี้

ภาพหน้าจอจาก 2016-02-10 12:45:26.png

โปรดทราบว่ารหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ํากันสําหรับโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อข้างต้นมีผู้อื่นนําไปใช้แล้ว ขออภัยในความไม่สะดวก) และจะเรียกใน Codelab นี้ว่า PROJECT_ID ในภายหลัง

จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากรของ Google Cloud

การเรียกใช้ Codelab นี้ไม่ควรมีค่าใช้จ่ายเกิน 2-3 ดอลลาร์ แต่อาจมากกว่านั้นหากคุณตัดสินใจใช้ทรัพยากรเพิ่มเติมหรือปล่อยให้ทรัพยากรทํางาน (ดู "cleanup" ในตอนท้ายของเอกสารนี้)

ผู้ใช้ใหม่ของ Google Cloud Platform มีสิทธิ์รับช่วงทดลองใช้ฟรี$300

ใน Google Cloud Console ให้คลิกไอคอนเมนูที่ด้านซ้ายบนของหน้าจอ

เลื่อนลงและเลือก SQL ในส่วนย่อยพื้นที่เก็บข้อมูล ดังนี้

ตอนนี้คุณควรเห็น UI ทางเว็บของ Cloud SQL และสมมติว่ากําลังใช้โปรเจ็กต์ที่ไม่มีอินสแตนซ์ Cloud SQL อยู่ คุณจะเห็นกล่องโต้ตอบที่เชิญให้คุณอินสแตนซ์ Cloud SQL ใหม่

หากคุณใช้โปรเจ็กต์ที่มีอินสแตนซ์ Cloud SQL อย่างน้อย 1 รายการอยู่แล้ว คุณจะเห็นรายการอินสแตนซ์เหล่านั้นแทน

หากโปรเจ็กต์ไม่มีอินสแตนซ์ Cloud SQL ให้กดปุ่มสร้างอินสแตนซ์เพื่อสร้างอินสแตนซ์

หากคุณใช้โปรเจ็กต์ที่มีอินสแตนซ์ Cloud SQL อย่างน้อย 1 รายการ ให้กดปุ่มสร้างอินสแตนซ์บนหน้าจออินสแตนซ์ดังที่แสดงด้านล่างนี้

ไม่ว่าในกรณีใด คุณจะเห็นหน้าเลือกประเภทอินสแตนซ์ ใน Codelab นี้ เราจะสร้างอินสแตนซ์ Cloud SQL รุ่นที่ 2 คลิกเลือกรุ่นที่ 2

2ndGenCloudSQLCreate.png

การดําเนินการนี้จะนําคุณไปยังหน้าสร้างอินสแตนซ์ คุณต้องระบุชื่อสําหรับอินสแตนซ์ที่นี่ ชื่อนี้ต้องไม่ซ้ํากันภายในโปรเจ็กต์ ไม่ใช่ชื่อในโปรเจ็กต์ คุณจึงใช้ชื่ออินสแตนซ์ codelab-0 เดียวกันกับที่แสดงในตัวอย่างนี้ได้ โดยสมมติว่าไม่มีอินสแตนซ์ Cloud SQL อื่นในโปรเจ็กต์ ป้อน "codelab-0" ลงในช่องรหัสอินสแตนซ์ สําหรับส่วนที่เหลือของ Codelab การกําหนดค่าส่วนที่เหลือสามารถใช้ค่าเริ่มต้นได้

โปรดทราบว่าเมื่อลบอินสแตนซ์ Cloud SQL คุณจะใช้ชื่ออินสแตนซ์นั้นซ้ําไม่ได้เป็นเวลาสูงสุด 1 สัปดาห์ หากคุณวางแผนที่จะใช้โปรเจ็กต์มากกว่าการทดสอบ โปรดตรวจสอบว่าได้เลือกชื่ออินสแตนซ์ที่แตกต่างจากชื่ออินสแตนซ์ที่คุณอาจต้องการใช้สําหรับงานจริง หรือคุณอาจพบว่าไม่ได้ใช้ชื่ออินสแตนซ์นั้นซ้ําได้เป็นระยะเวลาหนึ่ง

2GGCloudCloudCreate_2.png

เลื่อนไปที่ด้านล่างของหน้า แล้วกดสร้าง

2GGCloudCloudCreate_3.png

ระบบจะนําคุณไปยังหน้าอินสแตนซ์ ซึ่งคุณจะเห็นอินสแตนซ์ใหม่ที่มีไอคอนหมุนที่ด้านซ้าย ซึ่งระบุว่าระบบกําลังสร้างอินสแตนซ์อยู่

ในอีก 2 หรือ 3 นาที อินสแตนซ์จะพร้อมใช้ และเครื่องหมายถูกสีเขียวจะมาแทนที่ไอคอนหมุนสีน้ําเงิน โปรดรีเฟรชหน้าเป็นครั้งคราวโดยดําเนินการดังนี้

อินสแตนซ์ Cloud SQL พร้อมใช้งานแล้ว

คลิกชื่ออินสแตนซ์เพื่อแสดงหน้ารายละเอียดของอินสแตนซ์ แล้วคลิกการควบคุมการเข้าถึง ดังนี้

ในแท็บ "ควบคุมการเข้าถึง" ให้กดผู้ใช้:

ในแท็บผู้ใช้ ให้คลิกเปลี่ยนรหัสผ่านราก

ป้อนรหัสผ่านใหม่ในหน้าเปลี่ยนรหัสผ่านแล้วกดตกลง

เปิดใช้งาน Google Cloud Shell โดยกดปุ่มแจ้งใน Google Cloud Console:

หากนี่เป็นครั้งแรกที่คุณใช้ Google Cloud Shell สําหรับโปรเจ็กต์นี้ คุณจะเห็นหน้าจอ Google Cloud Shell กดเริ่ม Cloud Shell

cloudShellยินดีต้อนรับ.png

Cloud Shell ใหม่จะแสดงที่ด้านล่างของ Google Cloud Console หากคุณกด Start Cloud Shell บนหน้าจอของ Google Cloud Shell เมื่อมีการใช้โปรเจ็กต์นี้กับโปรเจ็กต์นี้เป็นครั้งแรก หรือหลังจากกดปุ่ม "เปิดใช้งาน Google Cloud Shell" ทันทีที่เคยใช้

Screen Shot 2016-03-07 เวลา 12.18.01.png

เชื่อมต่อกับอินสแตนซ์ Cloud SQL โดยใช้คําสั่ง gcloud 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;&#39 แล้วกด 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

ต่อไปเราจะค้นหาข้อมูล คุณจะเห็นตัวอย่างการค้นหาด้านล่าง คุณยังสร้างคําค้นหาบางอย่างเองได้ด้วย โปรดศึกษาไฟล์ employees.sql เพื่อทําความคุ้นเคยกับสคีมา db ก่อนอื่นให้ลงชื่อเข้าใช้ sql Prompt แล้วเปลี่ยนไปใช้ฐานข้อมูลพนักงาน แทนที่ 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) ใช้ gcloud ในสภาพแวดล้อม Cloud Shell แทนที่ 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) กลับไปที่หน้าอินสแตนซ์ Cloud SQL โดยคลิก SQL ที่มุมซ้ายบน

เปิดเมนูแบบเลื่อนลงข้างอินสแตนซ์ที่ต้องการลบ แล้วเลือก "Delete"

การลบอินสแตนซ์จะมีผลถาวร กู้คืนข้อมูลจากอินสแตนซ์ดังกล่าวไม่ได้ ในการยืนยันการลบอินสแตนซ์ที่ไม่ถูกต้องโดยไม่ได้ตั้งใจ คุณจะต้องยืนยันการลบโดยการป้อนชื่ออินสแตนซ์ในกล่องโต้ตอบการยืนยัน

ป้อนชื่ออินสแตนซ์และกด Delete

คุณสร้างอินสแตนซ์ Cloud SQL ใหม่ กําหนดค่ารหัสผ่านรูท สร้างฐานข้อมูลเปล่า และ (ลบ) อินสแตนซ์ Cloud SQL แล้ว

สิ่งที่เราพูดถึง

  • การสร้างอินสแตนซ์ Cloud SQL ผ่าน Google Cloud Console
  • การตั้งค่ารหัสผ่านรูท SQL ผ่าน Google Cloud Console
  • การเชื่อมต่อกับฐานข้อมูลโดยใช้ไคลเอ็นต์ mysql
  • การสร้างฐานข้อมูล MySQL ใหม่ผ่านข้อความแจ้ง mysql
  • กําลังลบอินสแตนซ์ Cloud SQL

ดูข้อมูลเพิ่มเติม