ประสบการณ์ของ GitHub กับการทำ RDB Partitioning
(github.blog)-
GitHub เริ่มต้นเมื่อราว 10 กว่าปีก่อนด้วย RoR และ MySQL อินสแตนซ์เดียว
-
เริ่มทำ partitioning ในปี 2019 และนี่คือประสบการณ์จากการทำงานหลากหลายอย่างตลอด 2 ปี
→ ระบุว่า ณ ปี 2021 โหลดของ DB ลดลง 50%
- พาร์ทิชันเสมือน
-
แยกแบบเสมือนในชั้นแอปพลิเคชันก่อนย้ายตารางจริง
-
จัดกลุ่มตารางและผูกรวมเป็น schema domain แล้วใช้ SQL Linter บังคับให้รักษาขอบเขต
→ เพื่อให้ปลอดภัยเมื่อต้องทำ partitioning ในภายหลัง
- ตรวจสอบขอบเขตเสมือนด้วย Query Linter และ Transaction Linter
- ย้ายข้อมูลโดยไม่มี downtime
- ใช้ฟีเจอร์ Vertical Sharding ของ Vitess
→ ติดตั้ง VTGate บน Kubernetes cluster แล้วเปลี่ยนเป็นจุดเชื่อมต่อ
- นำกระบวนการ Write-cutover มาใช้
→ ใช้ฟังก์ชัน Replication ของ MySQL ป้อนข้อมูลไปยังอีกคลัสเตอร์หนึ่ง
→ ใช้ ProxySQL ทำ Multiplex การเชื่อมต่อของ MySQL client
ผลลัพธ์
-
ในปี 2019
mysql1ซึ่งเป็นซิงเกิลคลัสเตอร์ ตอบสนองคิวรีเฉลี่ย 950,000 ครั้งต่อวินาที -
ในปี 2021 กระจายเป็นมัลติคลัสเตอร์แล้ว และตอบสนองคิวรีเฉลี่ย 1.2 ล้านครั้งต่อวินาที โดยภาระของโฮสต์ลดลงครึ่งหนึ่ง
ยังไม่มีความคิดเห็น