1. ภาพรวม
อัปเดตล่าสุด: 23-07-2020
Cloud Spanner คืออะไร
Google Cloud Spanner เป็นฐานข้อมูลที่กระจายอยู่ทั่วโลกซึ่งเป็นไปตามข้อกำหนดของ ACID และจัดการสำเนา การแบ่งส่วน และการประมวลผลธุรกรรมโดยอัตโนมัติ คุณจึงปรับขนาดได้อย่างรวดเร็วเพื่อให้ตรงกับรูปแบบการใช้งานและรับประกันความสำเร็จของผลิตภัณฑ์
ฟีเจอร์หลัก
- ฐานข้อมูลเชิงสัมพันธ์ที่สร้างขึ้นเพื่อการปรับขนาด: ทุกสิ่งที่คุณคาดหวังจากฐานข้อมูลเชิงสัมพันธ์ ไม่ว่าจะเป็นสคีมา คำค้นหา SQL และธุรกรรม ACID ได้รับการทดสอบอย่างเข้มงวดและพร้อมที่จะปรับขนาดทั่วโลก
- ความพร้อมใช้งาน 99.999%: Cloud Spanner มีความพร้อมใช้งาน 99.999% ชั้นนำของอุตสาหกรรมสำหรับอินสแตนซ์แบบหลายภูมิภาค ซึ่งมีเวลาหยุดทำงานน้อยกว่า 4 หลัก 10 เท่า และมีการจำลองแบบพร้อมกันแบบโปร่งใสในการกำหนดค่าแบบภูมิภาคและแบบหลายภูมิภาค
- การแบ่งข้อมูลอัตโนมัติ: 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 ทั้งหมด (ชื่อด้านบนมีผู้ใช้แล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้
จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากรของ Google Cloud
การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายเกิน 2-3 ดอลลาร์ แต่ก็อาจมีค่าใช้จ่ายมากกว่านี้หากคุณตัดสินใจใช้ทรัพยากรเพิ่มเติมหรือปล่อยให้ทรัพยากรทำงานต่อไป (ดูส่วน "การล้างข้อมูล" ที่ท้ายเอกสารนี้)
ผู้ใช้ใหม่ของ Google Cloud Platform มีสิทธิ์รับช่วงทดลองใช้ฟรีมูลค่า$300
การตรวจสอบสิทธิ์
หากยังไม่เคยติดตั้ง โปรดติดตั้งเครื่องมือบรรทัดคำสั่ง gcloud เมื่อติดตั้ง gcloud แล้ว ให้เปิดใช้งานข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันโดยเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
$ gcloud auth application-default login
Terraform
หากยังไม่ได้ติดตั้ง Terraform ก่อนหน้านี้ ให้ติดตั้ง Terraform
3. ผู้ให้บริการ Terraform ของ Google Cloud
ผู้ให้บริการ Terraform ของ Google Cloud มีทรัพยากร Cloud Spanner 4 รายการ ได้แก่
- google_spanner_instance
- google_spanner_database
- google_spanner_instance_iam
- google_spanner_database_iam
ในโค้ดแล็บนี้ เราจะสร้างและจัดการอินสแตนซ์และฐานข้อมูล 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
ในส่วนที่เหลือของโค้ดแล็บนี้ เราจะแก้ไขไฟล์นี้และใช้การเปลี่ยนแปลง
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.
เมื่อสร้างสำเร็จ my-first-database จะพร้อมใช้งานภายใต้อินสแตนซ์

5. การแก้ไขอินสแตนซ์
ดังที่ระบุไว้ในส่วนก่อนหน้า คุณสมบัติบางอย่างของอินสแตนซ์จะแก้ไขไม่ได้ แต่คุณสามารถเพิ่ม/ลดจำนวนโหนดเพื่อปรับทรัพยากรที่อินสแตนซ์ใช้ได้ อินสแตนซ์ที่สร้างมี 3 โหนด เราจะเพิ่มจำนวนโหนดเป็น 5 โดยการแก้ไขไฟล์ main.tf ดังนี้
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
สิ่งที่เราได้พูดถึง
- วิธีใช้ผู้ให้บริการ Terraform ของ Google Cloud
- การใช้ Terraform เพื่อสร้างอินสแตนซ์และฐานข้อมูล Cloud Spanner
- การใช้ Terraform เพื่อแก้ไขทรัพยากร Cloud Spanner
- การใช้ Terraform เพื่อลบทรัพยากร Cloud Spanner
ดูข้อมูลเพิ่มเติม
- ดูเอกสารประกอบของ Google Cloud Spanner
- อ่านเกี่ยวกับแหล่งข้อมูล Terraform ของ Google Cloud Spanner
- อ่านเกี่ยวกับการตั้งค่ากฎ IAM สำหรับอินสแตนซ์และฐานข้อมูล