• GitHub เริ่มต้นเมื่อราว 10 กว่าปีก่อนด้วย RoR และ MySQL อินสแตนซ์เดียว

  • เริ่มทำ partitioning ในปี 2019 และนี่คือประสบการณ์จากการทำงานหลากหลายอย่างตลอด 2 ปี

→ ระบุว่า ณ ปี 2021 โหลดของ DB ลดลง 50%

  1. พาร์ทิชันเสมือน
  • แยกแบบเสมือนในชั้นแอปพลิเคชันก่อนย้ายตารางจริง

  • จัดกลุ่มตารางและผูกรวมเป็น schema domain แล้วใช้ SQL Linter บังคับให้รักษาขอบเขต

→ เพื่อให้ปลอดภัยเมื่อต้องทำ partitioning ในภายหลัง

  • ตรวจสอบขอบเขตเสมือนด้วย Query Linter และ Transaction Linter
  1. ย้ายข้อมูลโดยไม่มี downtime
  • ใช้ฟีเจอร์ Vertical Sharding ของ Vitess

→ ติดตั้ง VTGate บน Kubernetes cluster แล้วเปลี่ยนเป็นจุดเชื่อมต่อ

  • นำกระบวนการ Write-cutover มาใช้

→ ใช้ฟังก์ชัน Replication ของ MySQL ป้อนข้อมูลไปยังอีกคลัสเตอร์หนึ่ง

→ ใช้ ProxySQL ทำ Multiplex การเชื่อมต่อของ MySQL client

ผลลัพธ์

  • ในปี 2019 mysql1 ซึ่งเป็นซิงเกิลคลัสเตอร์ ตอบสนองคิวรีเฉลี่ย 950,000 ครั้งต่อวินาที

  • ในปี 2021 กระจายเป็นมัลติคลัสเตอร์แล้ว และตอบสนองคิวรีเฉลี่ย 1.2 ล้านครั้งต่อวินาที โดยภาระของโฮสต์ลดลงครึ่งหนึ่ง

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น