คู่มือ Primary-Secondary Replication สำหรับ ฐานข้อมูล
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
การจำลองแบบฐานข้อมูล MySQL/MariaDB/Percona ระดับ Primary-Secondary
การจำลองแบบ Primary-Secondaryใช้เพื่อแก้ไขปัญหาต่างๆมากมายเกี่ยวกับประสิทธิภาพสนับสนุนการสำรองข้อมูลฐานข้อมูลที่แตกต่างกันและเป็นส่วนหนึ่งของโซลูชันที่ใหญ่กว่าเพื่อบรรเทาความล้มเหลวของระบบช่วยให้ข้อมูลจากเซิร์ฟเวอร์ฐานข้อมูลเดียว (หลักซึ่งก่อนหน้านี้เรียกว่า “มาสเตอร์”) ที่จะจำลองไปยังเซิร์ฟเวอร์ฐานข้อมูลตั้งแต่หนึ่งเซิร์ฟเวอร์ขึ้นไป (รองเดิมเรียกว่า “ทาส”) ส่วนหลักจะบันทึกการอัปเดตซึ่งจะกระจายไปยังส่วนรองส่วนรองจะแสดงข้อความระบุว่าได้รับการอัพเดตเรียบร้อยแล้วซึ่งอนุญาตให้ส่งการอัพเดตในภายหลังได้การจำลองแบบหลัก-รองอาจเป็นแบบซิงโครนัสหรือแบบอะซิงโครนัสก็ได้ความแตกต่างเป็นเพียงช่วงเวลาของการแพร่กระจายของการเปลี่ยนแปลงหากทำการเปลี่ยนแปลงกับอุปกรณ์หลักและรองในเวลาเดียวกันระบบจะซิงโครนัสหากการเปลี่ยนแปลงถูกจัดคิวและเขียนในภายหลังการเปลี่ยนแปลงนั้นจะเป็นแบบอะซิงโครนัส
ด้านล่างนี้เราจะครอบคลุมหัวข้อต่อไปนี้:
กรณีการใช้งานการจำลองแบบ
การใช้งานเป้าหมายสำหรับการจำลองแบบในฐานข้อมูล MySQL/MariaDB/Percona ประกอบด้วย:
- โซลูชันการขยายขนาด
- ความปลอดภัยของข้อมูล
- การวิเคราะห์
- การกระจายข้อมูลทางไกล
คุณสามารถใช้การจำลองแบบดังกล่าวและใช้ประโยชน์จากมันได้อย่างไร:
- การสำรองข้อมูล:เมื่อต้องการใช้การจำลองแบบเป็นโซลูชันการสำรองข้อมูลให้จำลองข้อมูลจากฐานข้อมูลหลักไปยังฐานข้อมูลรองแล้วสำรองข้อมูลรองสามารถหยุดชั่วคราวและปิดได้โดยไม่กระทบต่อการดำเนินการที่ทำงานอยู่ของข้อมูลหลักดังนั้นคุณจึงสามารถสร้างสแนปชอตที่มีประสิทธิภาพของข้อมูล "ที่ใช้งานอยู่" ซึ่งอาจจำเป็นต้องปิดระบบหลัก
- การขยายขนาด:คุณสามารถใช้การจำลองแบบเป็นโซลูชันการขยายขนาดได้นั่นคือที่ที่คุณต้องการแยกโหลดของการสืบค้นฐานข้อมูลไปยังเซิร์ฟเวอร์ฐานข้อมูลหลายเครื่องภายในข้อจำกัดที่สมเหตุสมผลบางประการเนื่องจากการจำลองแบบทำงานจากการกระจายของหนึ่งหลักไปยังหนึ่งรองรองการใช้เพื่อขยายขนาดจะทำงานได้ดีที่สุดใน Environment ที่คุณมีจำนวนการอ่านสูงและการเขียน/อัพเดตจำนวนน้อย
- กระจายโหลด:อาจมีสถานการณ์เมื่อคุณมีฐานข้อมูลหลักเดียวและต้องการจำลองฐานข้อมูลที่แตกต่างกันไปยังฐานข้อมูลรองที่ต่างกันตัวอย่างเช่นคุณอาจต้องการกระจายข้อมูลการขายไปยังแผนกที่จำเป็นเท่านั้นเพื่อช่วยกระจายภาระในระหว่างการวิเคราะห์ข้อมูล
- เพิ่มประสิทธิภาพ:เมื่อจำนวนตัวรองที่เชื่อมต่อกับตัวหลักเพิ่มขึ้นโหลดแม้ว่าจะน้อยที่สุดแต่ก็เพิ่มขึ้นเช่นกันเนื่องจากตัวรองแต่ละตัวใช้การเชื่อมต่อไคลเอนต์กับตัวหลักเนื่องจากแต่ละรองจะต้องได้รับสำเนาบันทึกไบนารีหลักแบบเต็มโหลดของเครือข่ายบนหลักอาจเพิ่มขึ้นและสร้างคอขวดด้วยหากคุณใช้ตัวรองจำนวนมากที่เชื่อมต่อกับตัวหลักตัวเดียวและตัวหลักนั้นกำลังยุ่งอยู่กับการประมวลผลคำขอ (เช่นเป็นส่วนหนึ่งของโซลูชันการขยายขนาด) คุณอาจต้องการปรับปรุงประสิทธิภาพของกระบวนการจำลองแบบวิธีหนึ่งในการปรับปรุงประสิทธิภาพของกระบวนการเรพลิเคชันคือการสร้างโครงสร้างเรพลิเคชันที่ลึกขึ้นซึ่งช่วยให้ตัวหลักสามารถเรพลิเคตไปยังตัวรองเพียงตัวเดียวเท่านั้นและสำหรับตัวรองที่เหลือเพื่อเชื่อมต่อกับตัวรองหลักนี้สำหรับข้อกำหนดในการจำลอง
- การบรรเทาความล้มเหลว:คุณสามารถตั้งค่าหลักและรอง (หรือหลายรอง) และเขียนสคริปต์ที่ตรวจสอบหลักเพื่อตรวจสอบว่ามีการใช้งานหรือไม่จากนั้นแนะนำให้แอปพลิเคชันของคุณและตัวรองเปลี่ยนหลักในกรณีที่เกิดความล้มเหลว
- ความปลอดภัย:คุณสามารถใช้ SSL เพื่อเข้ารหัสการถ่ายโอนบันทึกไบนารีที่จำเป็นในระหว่างการจำลองแบบแต่ทั้งหลักและรองต้องรองรับการเชื่อมต่อเครือข่าย SSL ถ้าโฮสต์ใดโฮสต์หนึ่งไม่สนับสนุนการเชื่อมต่อ SSL การจำลองแบบผ่านการเชื่อมต่อ SSL จะไม่สามารถทำได้การตั้งค่าการจำลองแบบโดยใช้การเชื่อมต่อ SSL คล้ายกับการตั้งค่าเซิร์ฟเวอร์และไคลเอนต์โดยใช้ SSL คุณต้องได้รับ (หรือสร้าง) ใบรับรองความปลอดภัยที่เหมาะสมซึ่งคุณสามารถใช้กับใบรับรองหลักและใบรับรองที่คล้ายกัน (จากผู้ออกใบรับรองเดียวกัน) ในแต่ละรอง
การติดตั้งอัตโนมัติ
Ruk-Com PaaS สามารถติดตั้งคลัสเตอร์ฐานข้อมูล MySQL/MariaDB/Percona ที่พร้อมใช้งานสูงได้โดยอัตโนมัติพร้อมด้วยประเภทการจำลองที่จำเป็น (รวมถึงprimary-secondaryหนึ่ง) เพียงไม่กี่คลิกตัวเลือกนี้มีให้ใช้งานโดยตรงในตัวช่วยสร้างโทโพโลยีระหว่างการสร้าง Environment:
- คลิกที่Environment ใหม่ปุ่มที่ด้านบนของแดชบอร์ด
- เลือกMySQL,MariaDB, หรือPerconaฐานข้อมูลในตัวช่วยสร้างโทโพโลยี
- เปิดใช้งานการจัดกลุ่มอัตโนมัติตัวเลือก.
- เลือกPrimary-Secondaryประเภทการจำลองแบบจากโครงการรายการแบบเลื่อนลง
- ปรับพารามิเตอร์อื่นๆหากจำเป็นแล้วคลิกสร้าง.
หรือคุณสามารถสร้าง Environment เฉพาะโดยอัตโนมัติด้วยคลัสเตอร์ฐานข้อมูล MySQL/MariaDB/Percona ที่กำหนดค่าไว้ล่วงหน้าโดยใช้แพ็คเกจสำเร็จรูปMySQL/MariaDB/คลัสเตอร์ Perconaแอปพลิเคชันที่มีอยู่ในแพลตฟอร์มตลาด.
- คลิกที่ตลาดปุ่มที่ด้านบนของแดชบอร์ด
- ค้นหาMySQL/MariaDB/คลัสเตอร์ Perconaแอปพลิเคชันโดยใช้แถบค้นหา
- ในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือกสแต็กฐานข้อมูลและประเภทการจำลองที่ต้องการ
- ตั้งค่าพารามิเตอร์ Environment อื่นๆแล้วคลิกติดตั้ง.
นั่นคือทั้งหมด! ภายในไม่กี่นาทีคลัสเตอร์ฐานข้อมูลของคุณจะถูกสร้างขึ้นและกำหนดค่าโดยอัตโนมัติตามประเภทการจำลองที่เลือก
การติดตั้งด้วยตนเอง
หากคุณต้องการควบคุมกระบวนการจำลองแบบเต็มรูปแบบและต้องการตั้งค่าและกำหนดค่าการจำลองแบบหลัก-รองด้วยตนเองคุณสามารถทำตามขั้นตอนด้านล่าง
สร้าง Environment
เคล็ดลับ:คำแนะนำด้านล่างนี้เหมาะสมอย่างยิ่งสำหรับทั้งสองอย่างMySQLและMariaDBเซิร์ฟเวอร์ฐานข้อมูล
เริ่มต้นด้วยการสร้าง Environment สองแบบสำหรับฐานข้อมูลหลักและรองของเรา
- เข้าสู่ระบบแดชบอร์ดแพลตฟอร์มแล้วคลิกEnvironment ใหม่ปุ่ม.
2. ในโทโพโลยี Environmentตัวช่วยเราจะเลือกMariaDBเป็นฐานข้อมูลของเราตั้งค่าขีดจำกัด cloudlet และตั้งชื่อ Environment แรกเช่นprimary-db.
คลิกสร้างและรอสักครู่เพื่อให้ Environment ของคุณถูกสร้างขึ้น
- ทำซ้ำขั้นตอนก่อนหน้าเพื่อสร้างรอง-dbEnvironment ที่มีฐานข้อมูลเดียวกันหรือเพียงแค่โคลนที่primary-dbEnvironment.
ตอนนี้คุณมีสอง Environment ที่เหมือนกันกับฐานข้อมูล MariaDB
กำหนดค่าฐานข้อมูลหลัก
มากำหนดค่าฐานข้อมูลหลักกันตอนนี้เลย
- คลิกที่การกำหนดค่าปุ่มสำหรับฐานข้อมูลหลักของคุณ
2. นำทางไปยังmy.cnfและเพิ่ม (หรือไม่ใส่ข้อคิดเห็นหากมีอยู่แล้ว) คุณสมบัติต่อไปนี้ตามที่แสดงด้านล่าง:
server-id = 1
log-bin = mysql-bin
binlog-format = mixed
บันทึก:เราใช้รูปแบบ binlog "ผสม" (binlog-format = ผสม) เพื่ออนุญาตการจำลองแบบการดำเนินการด้วยคีย์ต่างประเทศอย่าใช้รูปแบบ "คำสั่ง" มิฉะนั้นคุณจะได้รับข้อผิดพลาดในภายหลัง!
- บันทึกการเปลี่ยนแปลงและรีสตาร์ทMariaDB เพื่อใช้พารามิเตอร์การกำหนดค่าใหม่
4. คลิกที่เปิดในเบราว์เซอร์ปุ่มสำหรับMariaDBและเข้าสู่ระบบphpMyAdminแผงผู้ดูแลระบบที่ใช้ข้อมูลรับรองรูทฐานข้อมูลที่ส่งถึงคุณทางอีเมล
- นำทางไปยังบัญชีผู้ใช้แท็บแล้วคลิกเพิ่มบัญชีผู้ใช้.
6. ระบุชื่อและรหัสผ่านสำหรับผู้ใช้การจำลองข้อมูลของคุณ
ถัดไปเลื่อนลงและทำเครื่องหมายที่ไคลเอ็นต์การจำลองแบบและทาสการจำลองแบบสิทธิ์การบริหาร
คลิกไปที่ด้านล่างของหน้าเพื่อสร้างผู้ใช้
- เปลี่ยนไปที่สถานะเพื่อให้แน่ใจว่ามีการกำหนดค่าการจำลองอย่างถูกต้อง
ให้ความสนใจกับบันทึกไฟล์และตำแหน่งเนื่องจากจำเป็นต้องใช้ในการตั้งค่าฐานข้อมูลรอง
กำหนดค่าฐานข้อมูลรอง
กลับไปที่แดชบอร์ดแพลตฟอร์มและกำหนดค่าฐานข้อมูลรองของเรา
- คลิกที่การกำหนดค่าปุ่มสำหรับคุณรอง-dbEnvironment ให้เปิดไฟล์my.cnfไฟล์และเพิ่มคุณสมบัติต่อไปนี้:
server-id = 2
slave-skip-errors = all
สำหรับตัวอย่างนี้เราอนุญาตให้ฐานข้อมูลรองของเราข้ามข้อผิดพลาดทั้งหมดจากฐานข้อมูลหลัก (ทาสข้ามข้อผิดพลาด = ทั้งหมด) เพื่อไม่ให้หยุดการทำงานรองตามปกติในกรณีที่เกิดข้อผิดพลาดกับฐานข้อมูลหลัก
บันทึก:โดยทั่วไปไม่แนะนำให้ข้ามเช่นนี้ในระหว่างขั้นตอนการพัฒนาสามารถช่วยคุณค้นหาและแก้ไขจุดบกพร่องได้และในการผลิต (เมื่อโค้ดของคุณได้รับการทดสอบแล้ว) จะเป็นการดีกว่าที่จะเพิกเฉยต่อข้อผิดพลาดเฉพาะมากกว่าข้อผิดพลาดทั้งหมดช่วยหลีกเลี่ยงการยกเลิกการซิงโครไนซ์กับปัญหาเล็กๆน้อยๆบน Node หลักขณะเดียวกันก็ไม่พลาดปัญหาสำคัญใดๆที่อาจทำให้ข้อมูลสูญหายได้
- ต่อไปให้เปิด./etc/phpMyAdmin/config.inc.phpไฟล์และต่อท้ายด้วยตัวเลือกถัดไป:
$cfg['AllowArbitraryServer'] = true;
4.บันทึกการเปลี่ยนแปลงและรีสตาร์ทเซิร์ฟเวอร์ฐานข้อมูลสำรองของคุณเพื่อใช้พารามิเตอร์การกำหนดค่าใหม่
- มากำหนดค่าเซิร์ฟเวอร์ฐานข้อมูลรองผ่านทางบิวท์อินเว็บ SSHลูกค้า. เชื่อมต่อกับฐานข้อมูลของคุณโดยใช้ข้อมูลประจำตัวจากอีเมลที่ได้รับหลังจากการสร้าง Node (หากทำการโคลนให้ใช้ข้อมูลเดียวกันกับใน DB เริ่มต้น)
ทุบตี
mysql -u root -p
6. ระบุรายละเอียดแหล่งที่มาของการจำลอง (ฐานข้อมูลหลัก) อย่าลืมปรับตัวอย่างโค้ดด้านล่างด้วยข้อมูลจริงของคุณ:
- แหล่งที่มา_HOST(มาสเตอร์_โฮสต์) - URL หรือ IP ของแหล่งการจำลอง (รับจากแดชบอร์ด)
- SOURCE_USER(MASTER_USER) - ชื่อผู้ใช้การจำลอง (สร้างขึ้นในส่วนก่อนหน้า)
- แหล่งที่มา_รหัสผ่าน(MASTER_รหัสผ่าน) - รหัสผ่านของผู้ใช้การจำลองแบบ (สร้างขึ้นในส่วนก่อนหน้า)
- SOURCE_LOG_FILE(MASTER_LOG_FILE) - ไฟล์บันทึกของแหล่งที่มา (ดูขั้นตอนสุดท้ายของส่วนก่อนหน้า)
- SOURCE_LOG_POS(MASTER_LOG_POS) - ตำแหน่งบันทึกของแหล่งที่มา (ดูขั้นตอนสุดท้ายของส่วนก่อนหน้า)
สำหรับ MariaDB ให้ใช้คำสั่งต่อไปนี้ (เลิกใช้งานแล้วแต่เข้ากันได้กับ MySQL และ Percona):
ฐานข้อมูล 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 แนะนำให้ใช้แนวทางต่อไปนี้:
ฐานข้อมูล 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. ตอนนี้คุณสามารถเริ่มการจำลองด้วยคำสั่งที่เหมาะสม:
ฐานข้อมูล SQL
START REPLICA;
บันทึก:ใน MySQL เวอร์ชันก่อน 8.0.22 และใน MariaDB ก่อน 10.5.1 คำสั่งจะเป็นดังนี้:
ฐานข้อมูล SQL
START SLAVE;
8. เพื่อให้แน่ใจว่าทุกอย่างได้รับการกำหนดค่าอย่างถูกต้องให้ล็อกอินเข้าสู่แผงผู้ดูแลระบบฐานข้อมูลรองและไปที่สถานะแท็บคุณควรเห็นว่าการจำลองกำลังทำงานอยู่ดังที่แสดงด้านล่าง
ตรวจสอบผลลัพธ์
เราต้องตรวจสอบให้แน่ใจว่าการจำลองแบบระดับ Primary-Secondary ใช้ได้กับฐานข้อมูลของเราแล้ว
- มาสร้างฐานข้อมูลใหม่กัน (เช่นการจำลองแบบ_ทดสอบ) ในฐานหลักของเรา
2. เปลี่ยนไปใช้ฐานข้อมูลรองแล้วคุณจะเห็นว่าฐานข้อมูลใหม่ได้รับการจำลองแบบสำเร็จแล้ว



