ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บน Platform

RUK-COM PAAS / DATABASES

คู่มือ Auto-Clustering สำหรับ Database

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

คู่มือภาษาไทย

คำสั่ง ชื่อเมนู Parameter และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง

MariaDB/MySQL/Percona การทำ Cluster อัตโนมัติ

การจัดกลุ่ม Database เป็นข้อกำหนดบังคับสำหรับ Application ที่ใช้งานจริงที่มีโหลดสูงเพื่อให้มั่นใจว่าข้อมูลมีความพร้อมใช้งานและมีประสิทธิภาพสูงอย่างไรก็ตามการกำหนดค่า Cluster ที่เชื่อถือได้นั้นไม่ใช่เรื่องเล็กน้อยแม้แต่สำหรับนักพัฒนาและผู้ดูแลระบบที่มีประสบการณ์ก็ตามสำหรับการแก้ปัญหานี้ Platform ได้แนะนำการทำ Cluster แบบสำเร็จรูปสำหรับ MariaDB/MySQL/Percona เพื่อให้ Application มีความพร้อมใช้งานสูงตามค่าเริ่มต้น

Image 1: MySQL MariaDB Percona scheme

โซลูชันที่นำมาใช้ให้ประโยชน์หลายประการ:

  • ความพร้อมใช้งานสูงพร้อมตัวเลือกการจำลองแบบที่กำหนดไว้ล่วงหน้า- ระดับ Primary-Secondary, ระดับ Primary-Primary, Galera, XtraDB
  • ความสามารถในการปรับขนาดและการค้นพบอัตโนมัติ– Node ใหม่เพิ่มเข้ามาในระหว่างHorizontal Scalingเชื่อมต่อกับ Cluster โดยจะมีการปรับที่จำเป็นทั้งหมดโดยอัตโนมัติ
  • โหลดบาลานซ์อย่างมีประสิทธิภาพ– แต่ละ Cluster ได้รับการเสริมด้วย Node ProxySQL สอง Node สำหรับการทำโหลดบาลานซ์ด้วยการแยกคำขออ่าน/เขียนโดยอัตโนมัติ
  • Failover อัตโนมัติ– Node Database ที่ไม่พร้อมใช้งานชั่วคราวหรือมีเวลาแฝงสูงจะถูกแยกออกจาก Cluster โดยอัตโนมัติและเพิ่มอีกครั้งเมื่อการเชื่อมต่อได้รับการกู้คืน

เปิดใช้งานการจัดกลุ่มอัตโนมัติสำหรับ Database

คลิกที่Environment ใหม่ที่ Dashboard แล้วเลือกMariaDB/MySQL/PerconaDatabase

Image 3: new environmentเปิดใช้งานการจัดกลุ่มอัตโนมัติปุ่ม. ด้วยเหตุนี้เมนูแบบเลื่อนลงที่มีรูปแบบการจำลองที่แตกต่างกันจะปรากฏขึ้น:

  • MariaDB- Primary-Secondary, Primary-Primary และ Galera
  • MySQL- Primary-Secondary และ Primary-Primary
  • Percona- ระดับ Primary-Secondary, ระดับ Primary-Primary และ XtraDB

ตัวเลือกการจัดกลุ่มอัตโนมัติ

เลือกประเภทการจำลองที่คุณต้องการเพิ่มจำนวน Node ที่จำเป็น

Load Balancer ProxySQL ที่พร้อมใช้งานสูง

โซลูชันการทำ Cluster อัตโนมัติ MariaDB/MySQL/Percona แต่ละโซลูชันมี Node ProxySQL สอง Node ที่เปิดใช้งานตามค่าเริ่มต้นที่ด้านหน้า ClusterDatabase หากจำเป็นคุณสามารถแยกพวกมันออกจาก TopologyCluster ก่อนการติดตั้งด้วยสวิตช์ที่เกี่ยวข้องโปรดทราบว่าคุณจะไม่สามารถทำเช่นนั้นได้ในภายหลัง

Image 6: auto-clustering ProxySQL

ข้อมูลรับรองการเข้าถึง ClusterDatabase

ในระหว่างการสร้าง ClusterPlatform จะสร้างข้อมูลรับรองการเข้าถึง Database โดยอัตโนมัติแต่คุณสามารถแทนที่ข้อมูลเหล่านั้นด้วยข้อมูลของคุณเองได้ในสามขั้นตอนง่ายๆ:

  1. คลิกที่ตัวแปรปุ่ม.

Image 8: database variables2. จากนั้นกดเพิ่มเพื่อให้ข้อมูลรับรอง Database ของผู้ใช้ที่กำหนดเองผ่านตัวแปรสองตัวDB_USERและDB_PASSดังต่อไปนี้:

Image 9: add variables3. กดนำมาใช้และข้อมูลประจำตัวที่กำหนดเองจะถูกส่งถึงคุณเมื่อการติดตั้ง Cluster สำเร็จสำหรับการเข้าถึงPHP MyAdmin ที่ Node หลักและ ClusterDatabaseจุดเข้า.

Horizontal Scaling ของ Cluster

หากคุณตัดสินใจที่จะขยายขนาดprimary-secondary/primary-primaryTopology ที่มี Node Database เพิ่มเติมจะถูกสร้างขึ้นโดยการ Clone Node รองที่มีอยู่เมื่อขั้นตอนการ Clone เสร็จสมบูรณ์ Database บนสมาชิก Cluster ใหม่จะจับข้อมูลผ่านทางบินล็อกเล่นซ้ำอัลกอริธึมดังกล่าวรับประกันว่า binlog จะไม่มีวันหมดอายุและ Horizontal Scaling จะใช้เวลาไม่นาน

การแยก Layer Cluster

คุณอาจตัดสินใจว่าจะใช้ Application ภายนอกหรือไม่ขึ้นอยู่กับว่าคุณจะใช้ Application ภายนอกหรือไม่ชั้นคุณจะเปิดเผยภายนอก - ทั้งหมดหรือ Layer พร็อกซีจุดเริ่มต้นเท่านั้นหมุนการเข้าถึง SLBสลับไปยังตำแหน่งที่ต้องการสำหรับแต่ละ Layer แล้วคลิกสร้าง.

Image 12: database access via SLBนั่นคือทั้งหมด! ไม่ต้องกำหนดค่าใดๆ Cluster ก็พร้อมใช้งานแล้ว

Image 13: database auto-cluster

ข้อมูลการเข้าถึง ClusterDatabase

หลังจากติดตั้งสำเร็จคุณจะได้รับอีเมลจำนวนหนึ่งพร้อมข้อมูล Cluster:

  • PHP MyAdmin ที่ Node หลัก- Interface การดูแลระบบเว็บพร้อมข้อมูลประจำตัวในการเข้าถึง ServerDatabase สำหรับการจัดการเชิงโต้ตอบ

Image 15: access phpMyAdmin*จุดเริ่มต้นสำหรับการเชื่อมต่อกับ ClusterDatabase-ชื่อ Host และข้อมูลรับรองสำหรับการเชื่อมต่อApplication ไปยัง ClusterDatabase Node เหล่านี้สร้างชั้นพร็อกซีที่เรียกว่าจุดเริ่มต้นสำหรับ ClusterDatabase ที่มีชื่อ Host ดังต่อไปนี้:พร็อกซี.${envName}.${platformDomain}.

Image 16: ProxySQL DB replication

บันทึก:ในกรณีที่คุณกำลังจะสร้างและใช้บัญชีผู้ใช้แบบกำหนดเองหลังการติดตั้ง Cluster คุณควรเพิ่มบัญชีผู้ใช้เหล่านั้นลงในmysql_usersตารางบนแต่ละ Node ProxySQL ไม่เช่นนั้นคุณจะไม่สามารถสร้างการเชื่อมต่อกับ Database ผ่าน Layer พร็อกซีได้เมื่อต้องการทำเช่นนี้ให้ออกคำสั่งด้านล่าง:

$ MYSQL_PWD=admin mysql -h 127.0.0.1 -P6032 -uadmin -e "INSERT INTO mysql_users (username,password,default_hostgroup) VALUES ('<username>', '<password>', 2);"
$ MYSQL_PWD=admin mysql -h 127.0.0.1 -P6032 -uadmin -e "LOAD MYSQL USERS TO RUNTIME; SAVE MYSQL USERS TO DISK;"

ทดแทน<username>และ<password>ด้วยข้อมูลประจำตัวของบัญชี Database ที่สร้างขึ้นใหม่

  • แผงเว็บ ProxySQL- UI เว็บสำหรับสถิติระบบและตัวชี้วัด Database ช่วยในการแก้ไขปัญหาและการวิเคราะห์ประสิทธิภาพโดยมอบวิธีง่ายๆในการตรวจสอบสถานะของ Server ProxySQL และแบ็กเอนด์ Database รวมถึงสถิติการเชื่อมต่อประสิทธิภาพการสืบค้นและตัววัดอื่นๆ

Image 17: ProxySQL web panel

ประเภทการจำลองแบบใดให้เลือก

มาพิจารณารายละเอียดเกี่ยวกับรูปแบบการจำลองแต่ละรูปแบบที่มีสำหรับ Database ภายใน Platform เพื่อทำความเข้าใจว่ารูปแบบใดเหมาะสมที่สุดสำหรับความต้องการและกรณีการใช้งานเฉพาะ

การจำลองแบบ MariaDB/MySQL/Percona ระดับ Primary-Secondary

Primary-Secondaryการจำลองแบบเป็น Topology ที่ใช้บ่อยที่สุดซึ่งให้ความสอดคล้องที่ดี (นั่นคือมี Node เดียวในการแก้ไขข้อมูล) แต่ไม่มีการเปลี่ยนระบบอัตโนมัติเมื่อเกิดความล้มเหลวหลักเวลาแฝงในการเขียนในการจำลองแบบอะซิงโครนัสต่ำเนื่องจากการเขียนถูกบันทึกภายในเครื่องโดย Server หลักก่อนที่จะเขียนไปยัง Server รองช่วยให้สามารถขยายการอ่านได้โดยให้ประสิทธิภาพสูงสุดเนื่องจากการเพิ่มเรพลิกาเพิ่มเติมจะไม่ส่งผลต่อเวลาแฝงของการจำลองอ่านเนื้อหารองได้โดยไม่มีผลกระทบกับเนื้อหาหลักโดยมีข้อดีที่ชัดเจนดังนี้:

  • ประสิทธิภาพสูงสำหรับการร้องขอการอ่าน
  • การสำรอง Database สามารถทำได้โดยไม่มีผลกระทบต่อ Instance หลัก
  • คำขอเชิงวิเคราะห์สามารถโหลด Instance รองได้เท่านั้น (โดยไม่กระทบต่อไพรมาตี)

Image 20: database cluster Primary-Secondary scheme

การจำลองแบบ MariaDB/MySQL/Percona ระดับ Primary-Primary

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

Image 22: database cluster Primary-Primary scheme

ตรงกันข้ามกับการตั้งค่าเริ่มต้นในการปรับขนาด Cluster หลัก-หลักจะนำไปสู่การเพิ่ม Cluster รองเมื่อสร้างแล้ว Instance รองจะมีการกระจายเท่าๆกันระหว่าง Node หลักซึ่งช่วยให้กระจายปริมาณงานการจำลองได้อย่างราบรื่นและเพิ่มจำนวนอ่านความจุของ Cluster

Cluster MariaDB Galera และ Percona XtraDB

Cluster Galera และ XtraDBTopology คือการจำลองแบบซิงโครนัสหลายหลักที่ดำเนินการในเวลาที่ยอมรับธุรกรรมโดยการออกอากาศรายการเขียนที่ตั้งค่าให้กับ Node Cluster ทั้งหมดเพื่อนำไปใช้พวกเขาตรวจสอบให้แน่ใจว่าการเขียนถูกส่งไปยัง Node ทั้งหมดใน Cluster ก่อนที่จะคอมมิตการเขียนนี้จริง

Image 24: database cluster XtraDB Galera scheme

Application ผู้ใช้สามารถส่งการอ่านและเขียนไปยัง Node ใดๆใน Cluster ที่ให้ความสามารถในการขยายขนาดธุรกรรมการอ่านและเขียนการเพิ่ม Node ลงใน Cluster จะเป็นไปโดยอัตโนมัติโดยสมบูรณ์การแยก Node ออกจาก Cluster เป็นเพียงเรื่องของการลบ Node ที่ไม่จำเป็นหรือ Node ที่ล้มเหลวออกไม่จำเป็นต้องใช้ตรรกะขนาดใหญ่เพื่อแยกการอ่านและเขียนอีกต่อไปศักยภาพในการปรับขนาดสามารถนำไปใช้ได้ทันทีโดยไม่จำเป็นต้องเปลี่ยนตรรกะของ Application Galera และ XtraDB เสนอหนึ่งในการป้องกันข้อมูลสูญหายและ Database ที่ไม่สอดคล้องกันที่ดีที่สุดเนื่องจากไม่มีความล่าช้าในการจำลองข้อมูลหาก Node Cluster ตัวใดตัวหนึ่งล้มเหลว Application ผู้ใช้จะมองไม่เห็นและจะยังคงให้บริการผู้ใช้ต่อไปโดยใช้ Node อื่นที่อาจอยู่ในศูนย์ข้อมูลอื่นด้วย