1. ภาพรวม
อัปเดตล่าสุด 23-07-2020
Cloud Spanner คืออะไร
Google Cloud Spanner เป็นฐานข้อมูลที่เป็นไปตาม ACID ซึ่งกระจายอยู่ทั่วโลก ซึ่งจะจัดการการจำลอง การชาร์ดดิ้ง และการประมวลผลธุรกรรมโดยอัตโนมัติ เพื่อให้คุณปรับขนาดได้อย่างรวดเร็วเพื่อให้เป็นไปตามรูปแบบการใช้งานใดก็ได้และทำให้ผลิตภัณฑ์ประสบความสำเร็จ
ฟีเจอร์หลัก
- ฐานข้อมูลเชิงสัมพันธ์สร้างขึ้นเพื่อการปรับขนาด: ทุกอย่างที่คุณคาดหวังจากฐานข้อมูลเชิงสัมพันธ์ ไม่ว่าจะเป็นสคีมา การค้นหา SQL และธุรกรรม ACID ผ่านการทดสอบการต่อสู้และพร้อมปรับขนาดทั่วโลก
- ความพร้อมใช้งาน 99.999%: Cloud Spanner มีความพร้อมใช้งาน 99.999% ระดับชั้นนำของอุตสาหกรรมสำหรับอินสแตนซ์แบบหลายภูมิภาค โดยมีช่วงพักน้อยกว่า 10 เท่าเมื่อเทียบกับ 4 เก้า และให้การจำลองพร้อมกันอย่างโปร่งใสทั่วทั้งภูมิภาคและหลายภูมิภาค
- การชาร์ดดิ้งอัตโนมัติ: Cloud Spanner เพิ่มประสิทธิภาพการทำงานด้วยการชาร์ดดิ้งข้อมูลโดยอัตโนมัติตามโหลดของคำขอและขนาดของข้อมูล ด้วยเหตุนี้ คุณจึงใช้เวลาน้อยลงในการกังวลว่าจะปรับขนาดฐานข้อมูลอย่างไร และมุ่งเน้นไปที่การปรับขนาดธุรกิจแทน
สิ่งที่คุณจะได้เรียนรู้
- วิธีใช้ผู้ให้บริการ Terraform ของ Google Cloud
- การใช้ Terraform เพื่อสร้างอินสแตนซ์และฐานข้อมูล Cloud Spanner
- การใช้ Terraform เพื่อแก้ไขทรัพยากร Cloud Spanner
- การใช้ Terraform เพื่อลบทรัพยากร Cloud Spanner
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
หากยังไม่มีบัญชี Google (Gmail หรือ Google Apps) คุณต้องสร้างบัญชีก่อน ลงชื่อเข้าใช้คอนโซล Google Cloud Platform ( console.cloud.google.com) และสร้างโปรเจ็กต์ใหม่
โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีคนใช้แล้ว และจะใช้ไม่ได้ ขออภัย) โดยจะเรียกใน Codelab ว่า PROJECT_ID ในภายหลัง
ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การใช้งาน Codelab นี้น่าจะมีค่าใช้จ่ายไม่เกิน 2-3 ดอลลาร์ แต่อาจมากกว่านี้หากคุณตัดสินใจใช้ทรัพยากรเพิ่มหรือปล่อยให้ทำงาน (ดูส่วน "ล้างข้อมูล" ในตอนท้ายของเอกสารนี้)
ผู้ใช้ใหม่ของ Google Cloud Platform มีสิทธิ์รับช่วงทดลองใช้ฟรี$300
การตรวจสอบสิทธิ์
โปรดติดตั้งเครื่องมือบรรทัดคำสั่ง gcloud หากยังไม่ได้ทำ เมื่อติดตั้ง gcloud แล้ว ให้เปิดใช้งานข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันโดยเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
$ gcloud auth application-default login
เทอร์ราฟอร์ม
หากคุณยังไม่ได้ติดตั้ง Terraform ให้ติดตั้ง Terraform
3. ผู้ให้บริการ Google Cloud Terraform
ผู้ให้บริการ Google Cloud Terraform มีทรัพยากร Cloud Spanner 4 รายการ ได้แก่
- google_spanner_instance
- google_spanner_database
- google_spanner_instance_iam
- google_spanner_database_iam
ใน Codelab นี้ เราจะสร้างและจัดการอินสแตนซ์และฐานข้อมูลของ Cloud Spanner
สภาพแวดล้อม
ในสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ของคุณ ให้สร้างไดเรกทอรีใหม่สำหรับไฟล์การกำหนดค่า Terraform ของคุณ
$ mkdir ~/terraform-spanner $ cd ~/terraform-spanner
จากนั้นสร้างไฟล์ชื่อ "main.tf" ด้วยเนื้อหาต่อไปนี้และแทนที่ PROJECT_ID ด้วยรหัสโปรเจ็กต์ Google Cloud ของคุณเอง
$ cat >> main.tf <<'EOF' provider "google" { project = "PROJECT_ID" } EOF
ใน Codelab ส่วนที่เหลือนี้ เราจะแก้ไขไฟล์นี้และใช้การเปลี่ยนแปลง
4. การสร้างอินสแตนซ์และฐานข้อมูล
แก้ไข main.tf ที่มีเนื้อหาต่อไปนี้เพื่อเพิ่มอินสแตนซ์ Cloud Spanner ใหม่
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 3 }
เรียกใช้คำสั่งต่อไปนี้เพื่อใช้การเปลี่ยนแปลง
$ terraform apply # ... Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes # ... Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
หลังจากนำการเปลี่ยนแปลงไปใช้แล้ว คุณจะดูอินสแตนซ์ได้ที่ Google Cloud Console โปรดทราบว่าคุณจะแก้ไขการกำหนดค่าระดับภูมิภาคไม่ได้หลังจากสร้างอินสแตนซ์แล้ว
หลังจากสร้างอินสแตนซ์แล้ว เราจะสร้างฐานข้อมูลในขั้นตอนถัดไป แก้ไข main.tf ด้วยเนื้อหาต่อไปนี้
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 3 } resource "google_spanner_database" "database" { instance = google_spanner_instance.main.name name = "my-first-database" }
ใช้คำสั่งต่อไปนี้อีกครั้งเพื่อใช้การเปลี่ยนแปลง
$ terraform apply # ... Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
เมื่อประสบความสำเร็จ ฐานข้อมูลแรกของฉันจะพร้อมใช้งานภายใต้อินสแตนซ์ต่อไปนี้
5. การแก้ไขอินสแตนซ์
ตามที่ได้กล่าวไว้ในส่วนก่อนหน้านี้ พร็อพเพอร์ตี้บางอย่างของอินสแตนซ์จะแก้ไขไม่ได้ แต่คุณจะเพิ่ม/ลดจำนวนโหนดเพื่อปรับเปลี่ยนทรัพยากรที่อินสแตนซ์ใช้ได้ อินสแตนซ์ที่สร้างมี 3 โหนด การแก้ไขไฟล์ main.tf จะเป็นการเพิ่มจำนวนโหนดเป็น 5 โหนด ดังนี้
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 5 } resource "google_spanner_database" "database" { instance = google_spanner_instance.main.name name = "my-first-database" }
ขั้นตอนถัดไปคือนำการเปลี่ยนแปลงไปใช้จริง
$ terraform apply # ... Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
เมื่อสำเร็จแล้ว อินสแตนซ์จะใช้ 5 โหนด
6. การลบฐานข้อมูล
คุณลบฐานข้อมูลอย่างถาวรได้เมื่อไม่ต้องการใช้งานแล้ว เพียงนำฐานข้อมูลออกจาก main.tf และใช้การเปลี่ยนแปลง
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 5 }
$ terraform apply # ... Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
เมื่อทำสำเร็จ ฐานข้อมูลจะถูกลบอย่างถาวร
7. การลบอินสแตนซ์
คุณลบอินสแตนซ์แบบถาวรได้เมื่อไม่ต้องใช้แล้ว เพียงนำอินสแตนซ์ออกจาก main.tf และใช้การเปลี่ยนแปลง
provider "google" { project = "PROJECT_ID" }
$ terraform apply # ... Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
เมื่อทำสำเร็จ ระบบจะลบอินสแตนซ์ออกอย่างถาวร
8. ยินดีด้วย
คุณได้สร้าง แก้ไข และลบทรัพยากร Cloud Spanner โดยใช้ Terraform
หัวข้อที่ครอบคลุม
- วิธีใช้ผู้ให้บริการ Google Cloud Terraform
- การใช้ Terraform เพื่อสร้างอินสแตนซ์และฐานข้อมูล Cloud Spanner
- การใช้ Terraform เพื่อแก้ไขทรัพยากร Cloud Spanner
- การใช้ Terraform เพื่อลบทรัพยากร Cloud Spanner
ดูข้อมูลเพิ่มเติม
- ดูเอกสาร Google Cloud Spanner
- อ่านเกี่ยวกับทรัพยากร Google Cloud Spanner Terraform
- อ่านเกี่ยวกับการตั้งกฎ IAM สำหรับอินสแตนซ์และฐานข้อมูล