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

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

RUK-COM PAAS / DATABASES

คู่มือ Primary-Secondary Replication สำหรับ Database

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

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

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

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

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

การจำลองแบบ Primary-Secondaryใช้เพื่อแก้ไขปัญหาต่างๆมากมายเกี่ยวกับประสิทธิภาพสนับสนุนการสำรองข้อมูล Database ที่แตกต่างกันและเป็นส่วนหนึ่งของโซลูชันที่ใหญ่กว่าเพื่อบรรเทาความล้มเหลวของระบบช่วยให้ข้อมูลจาก ServerDatabase เดียว (หลักซึ่งก่อนหน้านี้เรียกว่า “มาสเตอร์”) ที่จะจำลองไปยัง ServerDatabase ตั้งแต่หนึ่ง Server ขึ้นไป (รองเดิมเรียกว่า “ทาส”) ส่วนหลักจะบันทึกการอัปเดตซึ่งจะกระจายไปยังส่วนรองส่วนรองจะแสดงข้อความระบุว่าได้รับการอัพเดตเรียบร้อยแล้วซึ่งอนุญาตให้ส่งการอัพเดตในภายหลังได้การจำลองแบบหลัก-รองอาจเป็นแบบซิงโครนัสหรือแบบอะซิงโครนัสก็ได้ความแตกต่างเป็นเพียงช่วงเวลาของการแพร่กระจายของการเปลี่ยนแปลงหากทำการเปลี่ยนแปลงกับอุปกรณ์หลักและรองในเวลาเดียวกันระบบจะซิงโครนัสหากการเปลี่ยนแปลงถูกจัดคิวและเขียนในภายหลังการเปลี่ยนแปลงนั้นจะเป็นแบบอะซิงโครนัส

Image 1: primary-secondary replication schemeด้านล่างนี้เราจะครอบคลุมหัวข้อต่อไปนี้:

กรณีการใช้งานการจำลองแบบ

การใช้งานเป้าหมายสำหรับการจำลองแบบใน Database MySQL/MariaDB/Percona ประกอบด้วย:

  • โซลูชันการขยายขนาด
  • ความปลอดภัยของข้อมูล
  • การวิเคราะห์
  • การกระจายข้อมูลทางไกล

คุณสามารถใช้การจำลองแบบดังกล่าวและใช้ประโยชน์จากมันได้อย่างไร:

  • การสำรองข้อมูล:เมื่อต้องการใช้การจำลองแบบเป็นโซลูชันการสำรองข้อมูลให้จำลองข้อมูลจาก Database หลักไปยัง Database รองแล้วสำรองข้อมูลรองสามารถหยุดชั่วคราวและปิดได้โดยไม่กระทบต่อการดำเนินการที่ทำงานอยู่ของข้อมูลหลักดังนั้นคุณจึงสามารถสร้างสแนปชอตที่มีประสิทธิภาพของข้อมูล "ที่ใช้งานอยู่" ซึ่งอาจจำเป็นต้องปิดระบบหลัก
  • การขยายขนาด:คุณสามารถใช้การจำลองแบบเป็นโซลูชันการขยายขนาดได้นั่นคือที่ที่คุณต้องการแยกโหลดของการสืบค้น Database ไปยัง ServerDatabase หลายเครื่องภายในข้อจำกัดที่สมเหตุสมผลบางประการเนื่องจากการจำลองแบบทำงานจากการกระจายของหนึ่งหลักไปยังหนึ่งรองรองการใช้เพื่อขยายขนาดจะทำงานได้ดีที่สุดใน Environment ที่คุณมีจำนวนการอ่านสูงและการเขียน/อัพเดตจำนวนน้อย
  • กระจายโหลด:อาจมีสถานการณ์เมื่อคุณมี Database หลักเดียวและต้องการจำลอง Database ที่แตกต่างกันไปยัง Database รองที่ต่างกันตัวอย่างเช่นคุณอาจต้องการกระจายข้อมูลการขายไปยังแผนกที่จำเป็นเท่านั้นเพื่อช่วยกระจายภาระในระหว่างการวิเคราะห์ข้อมูล
  • เพิ่มประสิทธิภาพ:เมื่อจำนวนตัวรองที่เชื่อมต่อกับตัวหลักเพิ่มขึ้นโหลดแม้ว่าจะน้อยที่สุดแต่ก็เพิ่มขึ้นเช่นกันเนื่องจากตัวรองแต่ละตัวใช้การเชื่อมต่อ Client กับตัวหลักเนื่องจากแต่ละรองจะต้องได้รับสำเนาบันทึกไบนารีหลักแบบเต็มโหลดของเครือข่ายบนหลักอาจเพิ่มขึ้นและสร้างคอขวดด้วยหากคุณใช้ตัวรองจำนวนมากที่เชื่อมต่อกับตัวหลักตัวเดียวและตัวหลักนั้นกำลังยุ่งอยู่กับการประมวลผลคำขอ (เช่นเป็นส่วนหนึ่งของโซลูชันการขยายขนาด) คุณอาจต้องการปรับปรุงประสิทธิภาพของกระบวนการจำลองแบบวิธีหนึ่งในการปรับปรุงประสิทธิภาพของกระบวนการเรพลิเคชันคือการสร้างโครงสร้างเรพลิเคชันที่ลึกขึ้นซึ่งช่วยให้ตัวหลักสามารถเรพลิเคตไปยังตัวรองเพียงตัวเดียวเท่านั้นและสำหรับตัวรองที่เหลือเพื่อเชื่อมต่อกับตัวรองหลักนี้สำหรับข้อกำหนดในการจำลอง
  • การบรรเทาความล้มเหลว:คุณสามารถตั้งค่าหลักและรอง (หรือหลายรอง) และเขียน Script ที่ตรวจสอบหลักเพื่อตรวจสอบว่ามีการใช้งานหรือไม่จากนั้นแนะนำให้ Application ของคุณและตัวรองเปลี่ยนหลักในกรณีที่เกิดความล้มเหลว
  • ความปลอดภัย:คุณสามารถใช้ SSL เพื่อเข้ารหัสการถ่ายโอนบันทึกไบนารีที่จำเป็นในระหว่างการจำลองแบบแต่ทั้งหลักและรองต้องรองรับการเชื่อมต่อเครือข่าย SSL ถ้า Host ใด Host หนึ่งไม่สนับสนุนการเชื่อมต่อ SSL การจำลองแบบผ่านการเชื่อมต่อ SSL จะไม่สามารถทำได้การตั้งค่าการจำลองแบบโดยใช้การเชื่อมต่อ SSL คล้ายกับการตั้งค่า Server และ Client โดยใช้ SSL คุณต้องได้รับ (หรือสร้าง) ใบรับรองความปลอดภัยที่เหมาะสมซึ่งคุณสามารถใช้กับใบรับรองหลักและใบรับรองที่คล้ายกัน (จากผู้ออกใบรับรองเดียวกัน) ในแต่ละรอง

การติดตั้งอัตโนมัติ

Ruk-Com PaaS สามารถติดตั้ง ClusterDatabase MySQL/MariaDB/Percona ที่พร้อมใช้งานสูงได้โดยอัตโนมัติพร้อมด้วยประเภทการจำลองที่จำเป็น (รวมถึงprimary-secondaryหนึ่ง) เพียงไม่กี่คลิกตัวเลือกนี้มีให้ใช้งานโดยตรงในตัวช่วยสร้าง Topology ระหว่างการสร้าง Environment:

  • คลิกที่Environment ใหม่ปุ่มที่ด้านบนของ Dashboard
  • เลือกMySQL,MariaDB, หรือPerconaDatabase ในตัวช่วยสร้าง Topology
  • เปิดใช้งานการจัดกลุ่มอัตโนมัติตัวเลือก.
  • เลือกPrimary-Secondaryประเภทการจำลองแบบจากโครงการรายการแบบเลื่อนลง
  • ปรับ Parameter อื่นๆหากจำเป็นแล้วคลิกสร้าง.

Image 4: database auto-clusteringหรือคุณสามารถสร้าง Environment เฉพาะโดยอัตโนมัติด้วย ClusterDatabase MySQL/MariaDB/Percona ที่กำหนดค่าไว้ล่วงหน้าโดยใช้ Package สำเร็จรูปMySQL/MariaDB/Cluster PerconaApplication ที่มีอยู่ใน Platformตลาด.

  • คลิกที่ตลาดปุ่มที่ด้านบนของ Dashboard
  • ค้นหาMySQL/MariaDB/Cluster PerconaApplication โดยใช้แถบค้นหา
  • ในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือก StackDatabase และประเภทการจำลองที่ต้องการ
  • ตั้งค่า Parameter Environment อื่นๆแล้วคลิกติดตั้ง.

Image 5: database cluster marketplaceนั่นคือทั้งหมด! ภายในไม่กี่นาที ClusterDatabase ของคุณจะถูกสร้างขึ้นและกำหนดค่าโดยอัตโนมัติตามประเภทการจำลองที่เลือก

การติดตั้งด้วยตนเอง

หากคุณต้องการควบคุมกระบวนการจำลองแบบเต็มรูปแบบและต้องการตั้งค่าและกำหนดค่าการจำลองแบบหลัก-รองด้วยตนเองคุณสามารถทำตามขั้นตอนด้านล่าง

สร้าง Environment

เคล็ดลับ:คำแนะนำด้านล่างนี้เหมาะสมอย่างยิ่งสำหรับทั้งสองอย่างMySQLและMariaDBServerDatabase

เริ่มต้นด้วยการสร้าง Environment สองแบบสำหรับ Database หลักและรองของเรา

  1. เข้าสู่ระบบ DashboardPlatform แล้วคลิกEnvironment ใหม่ปุ่ม.

Image 8: create new environment button2. ในTopology Environmentตัวช่วยเราจะเลือกMariaDBเป็น Database ของเราตั้งค่าขีดจำกัด cloudlet และตั้งชื่อ Environment แรกเช่นprimary-db.

Image 9: environment topology wizardคลิกสร้างและรอสักครู่เพื่อให้ Environment ของคุณถูกสร้างขึ้น

  1. ทำซ้ำขั้นตอนก่อนหน้าเพื่อสร้างรอง-dbEnvironment ที่มี Database เดียวกันหรือเพียงแค่Cloneที่primary-dbEnvironment.

Image 10: database environments createdตอนนี้คุณมีสอง Environment ที่เหมือนกันกับ Database MariaDB

กำหนดค่า Database หลัก

มากำหนดค่า Database หลักกันตอนนี้เลย

  1. คลิกที่การกำหนดค่าปุ่มสำหรับ Database หลักของคุณ

Image 12: primary DB config button2. นำทางไปยังmy.cnfและเพิ่ม (หรือไม่ใส่ข้อคิดเห็นหากมีอยู่แล้ว) คุณสมบัติต่อไปนี้ตามที่แสดงด้านล่าง:

server-id = 1
log-bin = mysql-bin
binlog-format = mixed

Image 13: primary DB my.cnf

บันทึก:เราใช้รูปแบบ binlog "ผสม" (binlog-format = ผสม) เพื่ออนุญาตการจำลองแบบการดำเนินการด้วยคีย์ต่างประเทศอย่าใช้รูปแบบ "คำสั่ง" มิฉะนั้นคุณจะได้รับข้อผิดพลาดในภายหลัง!

  1. บันทึกการเปลี่ยนแปลงและRestartMariaDB เพื่อใช้ Parameter การกำหนดค่าใหม่

Image 14: primary DB restart node4. คลิกที่เปิดใน Browserปุ่มสำหรับMariaDBและเข้าสู่ระบบphpMyAdminแผงผู้ดูแลระบบที่ใช้ข้อมูลรับรองรูท Database ที่ส่งถึงคุณทางอีเมล

  1. นำทางไปยังบัญชีผู้ใช้แท็บแล้วคลิกเพิ่มบัญชีผู้ใช้.

Image 15: primary DB add user6. ระบุชื่อและรหัสผ่านสำหรับผู้ใช้การจำลองข้อมูลของคุณ

Image 16: database user credentialsถัดไปเลื่อนลงและทำเครื่องหมายที่Client การจำลองแบบและทาสการจำลองแบบสิทธิ์การบริหาร

Image 17: database user privilegesคลิกไปที่ด้านล่างของหน้าเพื่อสร้างผู้ใช้

  1. เปลี่ยนไปที่สถานะเพื่อให้แน่ใจว่ามีการกำหนดค่าการจำลองอย่างถูกต้อง

Image 18: primary DB statusให้ความสนใจกับบันทึกไฟล์และตำแหน่งเนื่องจากจำเป็นต้องใช้ในการตั้งค่า Database รอง

กำหนดค่า Database รอง

กลับไปที่ DashboardPlatform และกำหนดค่า Database รองของเรา

  1. คลิกที่การกำหนดค่าปุ่มสำหรับคุณรอง-dbEnvironment ให้เปิดไฟล์my.cnfไฟล์และเพิ่มคุณสมบัติต่อไปนี้:
server-id = 2
slave-skip-errors = all

Image 20: secondary DB my.cnf configสำหรับตัวอย่างนี้เราอนุญาตให้ Database รองของเราข้ามข้อผิดพลาดทั้งหมดจาก Database หลัก (ทาสข้ามข้อผิดพลาด = ทั้งหมด) เพื่อไม่ให้หยุดการทำงานรองตามปกติในกรณีที่เกิดข้อผิดพลาดกับ Database หลัก

บันทึก:โดยทั่วไปไม่แนะนำให้ข้ามเช่นนี้ในระหว่างขั้นตอนการพัฒนาสามารถช่วยคุณค้นหาและแก้ไขจุดบกพร่องได้และในการผลิต (เมื่อ Code ของคุณได้รับการทดสอบแล้ว) จะเป็นการดีกว่าที่จะเพิกเฉยต่อข้อผิดพลาดเฉพาะมากกว่าข้อผิดพลาดทั้งหมดช่วยหลีกเลี่ยงการยกเลิกการ Sync กับปัญหาเล็กๆน้อยๆบน Node หลักขณะเดียวกันก็ไม่พลาดปัญหาสำคัญใดๆที่อาจทำให้ข้อมูลสูญหายได้

  1. ต่อไปให้เปิด./etc/phpMyAdmin/config.inc.phpไฟล์และต่อท้ายด้วยตัวเลือกถัดไป:

$cfg['AllowArbitraryServer'] = true;

Image 21: secondary DB allow arbitrary server4.บันทึกการเปลี่ยนแปลงและRestartServerDatabase สำรองของคุณเพื่อใช้ Parameter การกำหนดค่าใหม่

  1. มากำหนดค่า ServerDatabase รองผ่านทางบิวท์อินเว็บ SSHลูกค้า. เชื่อมต่อกับ Database ของคุณโดยใช้ข้อมูลประจำตัวจากอีเมลที่ได้รับหลังจากการสร้าง Node (หากทำการ Clone ให้ใช้ข้อมูลเดียวกันกับใน DB เริ่มต้น)

ทุบตี

mysql -u root -p

Image 22: SSH access to database6. ระบุรายละเอียดแหล่งที่มาของการจำลอง (Database หลัก) อย่าลืมปรับตัวอย่าง Code ด้านล่างด้วยข้อมูลจริงของคุณ:

  • แหล่งที่มา_HOST(มาสเตอร์_Host) - URL หรือ IP ของแหล่งการจำลอง (รับจาก Dashboard)
  • SOURCE_USER(MASTER_USER) - ชื่อผู้ใช้การจำลอง (สร้างขึ้นในส่วนก่อนหน้า)
  • แหล่งที่มา_รหัสผ่าน(MASTER_รหัสผ่าน) - รหัสผ่านของผู้ใช้การจำลองแบบ (สร้างขึ้นในส่วนก่อนหน้า)
  • SOURCE_LOG_FILE(MASTER_LOG_FILE) - Log File ของแหล่งที่มา (ดูขั้นตอนสุดท้ายของส่วนก่อนหน้า)
  • SOURCE_LOG_POS(MASTER_LOG_POS) - ตำแหน่งบันทึกของแหล่งที่มา (ดูขั้นตอนสุดท้ายของส่วนก่อนหน้า)

สำหรับ MariaDB ให้ใช้คำสั่งต่อไปนี้ (เลิกใช้งานแล้วแต่เข้ากันได้กับ MySQL และ Percona):

Database SQL

CHANGE MASTER TO
    MASTER_HOST='node410337-primary-db.domain.com',
    MASTER_USER='replication',
    MASTER_PASSWORD='passw0rd',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=865;

สำหรับ MySQL (เวอร์ชัน 8.0.22 และใหม่กว่า) และ Percona แนะนำให้ใช้แนวทางต่อไปนี้:

Database SQL

CHANGE REPLICATION SOURCE TO
    SOURCE_HOST='node410337-primary-db.domain.com',
    SOURCE_USER='replication',
    SOURCE_PASSWORD='passw0rd',
    SOURCE_LOG_FILE='mysql-bin.000001',
    SOURCE_LOG_POS=865;

Image 23: set replication source7. ตอนนี้คุณสามารถเริ่มการจำลองด้วยคำสั่งที่เหมาะสม:

Database SQL

START REPLICA;

บันทึก:ใน MySQL เวอร์ชันก่อน 8.0.22 และใน MariaDB ก่อน 10.5.1 คำสั่งจะเป็นดังนี้:

Database SQL

START SLAVE;

Image 24: start replication8. เพื่อให้แน่ใจว่าทุกอย่างได้รับการกำหนดค่าอย่างถูกต้องให้ล็อกอินเข้าสู่แผงผู้ดูแลระบบ Database รองและไปที่สถานะแท็บคุณควรเห็นว่าการจำลองกำลังทำงานอยู่ดังที่แสดงด้านล่าง

Image 25: secondary database status

ตรวจสอบผลลัพธ์

เราต้องตรวจสอบให้แน่ใจว่าการจำลองแบบระดับ Primary-Secondary ใช้ได้กับ Database ของเราแล้ว

  1. มาสร้าง Database ใหม่กัน (เช่นการจำลองแบบ_ทดสอบ) ในฐานหลักของเรา

Image 27: create database on primary2. เปลี่ยนไปใช้ Database รองแล้วคุณจะเห็นว่า Database ใหม่ได้รับการจำลองแบบสำเร็จแล้ว

Image 28: replicated database on secondaryตอนนี้คุณมีการจำลอง Database ของคุณเองในระบบ Cloud แล้วสนุก!