คู่มือ Primary-Secondary Replication สำหรับ Database
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู Parameter และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
การจำลองแบบ Database MySQL/MariaDB/Percona ระดับ Primary-Secondary
การจำลองแบบ Primary-Secondaryใช้เพื่อแก้ไขปัญหาต่างๆมากมายเกี่ยวกับประสิทธิภาพสนับสนุนการสำรองข้อมูล Database ที่แตกต่างกันและเป็นส่วนหนึ่งของโซลูชันที่ใหญ่กว่าเพื่อบรรเทาความล้มเหลวของระบบช่วยให้ข้อมูลจาก ServerDatabase เดียว (หลักซึ่งก่อนหน้านี้เรียกว่า “มาสเตอร์”) ที่จะจำลองไปยัง ServerDatabase ตั้งแต่หนึ่ง Server ขึ้นไป (รองเดิมเรียกว่า “ทาส”) ส่วนหลักจะบันทึกการอัปเดตซึ่งจะกระจายไปยังส่วนรองส่วนรองจะแสดงข้อความระบุว่าได้รับการอัพเดตเรียบร้อยแล้วซึ่งอนุญาตให้ส่งการอัพเดตในภายหลังได้การจำลองแบบหลัก-รองอาจเป็นแบบซิงโครนัสหรือแบบอะซิงโครนัสก็ได้ความแตกต่างเป็นเพียงช่วงเวลาของการแพร่กระจายของการเปลี่ยนแปลงหากทำการเปลี่ยนแปลงกับอุปกรณ์หลักและรองในเวลาเดียวกันระบบจะซิงโครนัสหากการเปลี่ยนแปลงถูกจัดคิวและเขียนในภายหลังการเปลี่ยนแปลงนั้นจะเป็นแบบอะซิงโครนัส
ด้านล่างนี้เราจะครอบคลุมหัวข้อต่อไปนี้:
กรณีการใช้งานการจำลองแบบ
การใช้งานเป้าหมายสำหรับการจำลองแบบใน 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 อื่นๆหากจำเป็นแล้วคลิกสร้าง.
หรือคุณสามารถสร้าง Environment เฉพาะโดยอัตโนมัติด้วย ClusterDatabase MySQL/MariaDB/Percona ที่กำหนดค่าไว้ล่วงหน้าโดยใช้ Package สำเร็จรูปMySQL/MariaDB/Cluster PerconaApplication ที่มีอยู่ใน Platformตลาด.
- คลิกที่ตลาดปุ่มที่ด้านบนของ Dashboard
- ค้นหาMySQL/MariaDB/Cluster PerconaApplication โดยใช้แถบค้นหา
- ในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือก StackDatabase และประเภทการจำลองที่ต้องการ
- ตั้งค่า Parameter Environment อื่นๆแล้วคลิกติดตั้ง.
นั่นคือทั้งหมด! ภายในไม่กี่นาที ClusterDatabase ของคุณจะถูกสร้างขึ้นและกำหนดค่าโดยอัตโนมัติตามประเภทการจำลองที่เลือก
การติดตั้งด้วยตนเอง
หากคุณต้องการควบคุมกระบวนการจำลองแบบเต็มรูปแบบและต้องการตั้งค่าและกำหนดค่าการจำลองแบบหลัก-รองด้วยตนเองคุณสามารถทำตามขั้นตอนด้านล่าง
สร้าง Environment
เคล็ดลับ:คำแนะนำด้านล่างนี้เหมาะสมอย่างยิ่งสำหรับทั้งสองอย่างMySQLและMariaDBServerDatabase
เริ่มต้นด้วยการสร้าง Environment สองแบบสำหรับ Database หลักและรองของเรา
- เข้าสู่ระบบ DashboardPlatform แล้วคลิกEnvironment ใหม่ปุ่ม.
2. ในTopology Environmentตัวช่วยเราจะเลือกMariaDBเป็น Database ของเราตั้งค่าขีดจำกัด cloudlet และตั้งชื่อ Environment แรกเช่นprimary-db.
คลิกสร้างและรอสักครู่เพื่อให้ Environment ของคุณถูกสร้างขึ้น
- ทำซ้ำขั้นตอนก่อนหน้าเพื่อสร้างรอง-dbEnvironment ที่มี Database เดียวกันหรือเพียงแค่Cloneที่primary-dbEnvironment.
ตอนนี้คุณมีสอง Environment ที่เหมือนกันกับ Database MariaDB
กำหนดค่า Database หลัก
มากำหนดค่า Database หลักกันตอนนี้เลย
- คลิกที่การกำหนดค่าปุ่มสำหรับ Database หลักของคุณ
2. นำทางไปยังmy.cnfและเพิ่ม (หรือไม่ใส่ข้อคิดเห็นหากมีอยู่แล้ว) คุณสมบัติต่อไปนี้ตามที่แสดงด้านล่าง:
server-id = 1
log-bin = mysql-bin
binlog-format = mixed
บันทึก:เราใช้รูปแบบ binlog "ผสม" (binlog-format = ผสม) เพื่ออนุญาตการจำลองแบบการดำเนินการด้วยคีย์ต่างประเทศอย่าใช้รูปแบบ "คำสั่ง" มิฉะนั้นคุณจะได้รับข้อผิดพลาดในภายหลัง!
- บันทึกการเปลี่ยนแปลงและRestartMariaDB เพื่อใช้ Parameter การกำหนดค่าใหม่
4. คลิกที่เปิดใน Browserปุ่มสำหรับMariaDBและเข้าสู่ระบบphpMyAdminแผงผู้ดูแลระบบที่ใช้ข้อมูลรับรองรูท Database ที่ส่งถึงคุณทางอีเมล
- นำทางไปยังบัญชีผู้ใช้แท็บแล้วคลิกเพิ่มบัญชีผู้ใช้.
6. ระบุชื่อและรหัสผ่านสำหรับผู้ใช้การจำลองข้อมูลของคุณ
ถัดไปเลื่อนลงและทำเครื่องหมายที่Client การจำลองแบบและทาสการจำลองแบบสิทธิ์การบริหาร
คลิกไปที่ด้านล่างของหน้าเพื่อสร้างผู้ใช้
- เปลี่ยนไปที่สถานะเพื่อให้แน่ใจว่ามีการกำหนดค่าการจำลองอย่างถูกต้อง
ให้ความสนใจกับบันทึกไฟล์และตำแหน่งเนื่องจากจำเป็นต้องใช้ในการตั้งค่า Database รอง
กำหนดค่า Database รอง
กลับไปที่ DashboardPlatform และกำหนดค่า Database รองของเรา
- คลิกที่การกำหนดค่าปุ่มสำหรับคุณรอง-dbEnvironment ให้เปิดไฟล์my.cnfไฟล์และเพิ่มคุณสมบัติต่อไปนี้:
server-id = 2
slave-skip-errors = all
สำหรับตัวอย่างนี้เราอนุญาตให้ Database รองของเราข้ามข้อผิดพลาดทั้งหมดจาก Database หลัก (ทาสข้ามข้อผิดพลาด = ทั้งหมด) เพื่อไม่ให้หยุดการทำงานรองตามปกติในกรณีที่เกิดข้อผิดพลาดกับ Database หลัก
บันทึก:โดยทั่วไปไม่แนะนำให้ข้ามเช่นนี้ในระหว่างขั้นตอนการพัฒนาสามารถช่วยคุณค้นหาและแก้ไขจุดบกพร่องได้และในการผลิต (เมื่อ Code ของคุณได้รับการทดสอบแล้ว) จะเป็นการดีกว่าที่จะเพิกเฉยต่อข้อผิดพลาดเฉพาะมากกว่าข้อผิดพลาดทั้งหมดช่วยหลีกเลี่ยงการยกเลิกการ Sync กับปัญหาเล็กๆน้อยๆบน Node หลักขณะเดียวกันก็ไม่พลาดปัญหาสำคัญใดๆที่อาจทำให้ข้อมูลสูญหายได้
- ต่อไปให้เปิด./etc/phpMyAdmin/config.inc.phpไฟล์และต่อท้ายด้วยตัวเลือกถัดไป:
$cfg['AllowArbitraryServer'] = true;
4.บันทึกการเปลี่ยนแปลงและRestartServerDatabase สำรองของคุณเพื่อใช้ Parameter การกำหนดค่าใหม่
- มากำหนดค่า ServerDatabase รองผ่านทางบิวท์อินเว็บ SSHลูกค้า. เชื่อมต่อกับ Database ของคุณโดยใช้ข้อมูลประจำตัวจากอีเมลที่ได้รับหลังจากการสร้าง Node (หากทำการ Clone ให้ใช้ข้อมูลเดียวกันกับใน DB เริ่มต้น)
ทุบตี
mysql -u root -p
6. ระบุรายละเอียดแหล่งที่มาของการจำลอง (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;
7. ตอนนี้คุณสามารถเริ่มการจำลองด้วยคำสั่งที่เหมาะสม:
Database SQL
START REPLICA;
บันทึก:ใน MySQL เวอร์ชันก่อน 8.0.22 และใน MariaDB ก่อน 10.5.1 คำสั่งจะเป็นดังนี้:
Database SQL
START SLAVE;
8. เพื่อให้แน่ใจว่าทุกอย่างได้รับการกำหนดค่าอย่างถูกต้องให้ล็อกอินเข้าสู่แผงผู้ดูแลระบบ Database รองและไปที่สถานะแท็บคุณควรเห็นว่าการจำลองกำลังทำงานอยู่ดังที่แสดงด้านล่าง
ตรวจสอบผลลัพธ์
เราต้องตรวจสอบให้แน่ใจว่าการจำลองแบบระดับ Primary-Secondary ใช้ได้กับ Database ของเราแล้ว
- มาสร้าง Database ใหม่กัน (เช่นการจำลองแบบ_ทดสอบ) ในฐานหลักของเรา
2. เปลี่ยนไปใช้ Database รองแล้วคุณจะเห็นว่า Database ใหม่ได้รับการจำลองแบบสำเร็จแล้ว
ตอนนี้คุณมีการจำลอง Database ของคุณเองในระบบ Cloud แล้วสนุก!


