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

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

ในแล็บนี้ เราจะสร้างอินสแตนซ์ 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 ทั้งหมด (ชื่อด้านบนถูกใช้ไปแล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้

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

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

ผู้ใช้ใหม่ของ 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

2ndGenCloudSQLCreate.png

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

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

2ndGenCloudSQLCreate_2.png

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

2ndGenCloudSQLCreate_3.png

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

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

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

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

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

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

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

เปิดใช้งาน Google Cloud Shell โดยกดปุ่มพรอมต์ใน Google Cloud Console

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

cloudShellWelcome.png

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

Screen Shot 2016-03-07 at 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)

หากคำค้นหาแสดงผลเป็น "ตกลง" แสดงว่าอินสแตนซ์ใช้งานได้ มาออกจากระบบและโหลดข้อมูลตัวอย่างเพื่อเรียกใช้การค้นหาจริงกัน

พิมพ์ "exit;" แล้วกด Enter เพื่อออกจากพรอมต์ mysql

เราจะโหลดชุดข้อมูลตัวอย่างพนักงานซึ่งคุณจะเห็นในเอกสารประกอบอย่างเป็นทางการของ MySQL

ก่อนอื่นเราต้องดาวน์โหลดสคริปต์และข้อมูลโดยทำดังนี้

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

ประการที่ 2 เราต้องสร้างฐานข้อมูลและตาราง รวมถึงโหลดข้อมูล อีกครั้ง ให้แทนที่ 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 สัปดาห์

คุณมี 2 ตัวเลือกในการลบอินสแตนซ์ Cloud SQL

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 ที่มุมซ้ายบน

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

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

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

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

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

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

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