เป็นไปได้ไหมที่จะตั้งค่าการจำลองแบบ MySql เพื่อให้ทาสคนหนึ่งฟังอาจารย์สองคนที่แตกต่างกัน?
เป็นไปได้ไหมที่จะตั้งค่าการจำลองแบบ MySql เพื่อให้ทาสคนหนึ่งฟังอาจารย์สองคนที่แตกต่างกัน?
คำตอบ:
จากการออกแบบกระบวนการ mysqld หนึ่งกระบวนการไม่สามารถฟังอาจารย์สองคนที่แตกต่างกันได้พร้อมกัน
คำสั่ง CHANGE MASTER TO อนุญาตให้คุณตั้ง Master หนึ่งตัวเป็นแหล่งข้อมูลเพื่ออ่าน
เพื่อเลียนแบบสิ่งนี้คุณจะต้องสลับระหว่างสองอาจารย์โดยทางโปรแกรม คุณจะทำอย่างไร
นี่คือแนวคิดพื้นฐาน
ตั้งค่าการจำลองแบบ M1 ถึง S1 แล้ว M2 ถึง S1 เช่นนี้
ทุกครั้งที่คุณเปลี่ยนจากปริญญาโทหนึ่งไปเป็นอีกปริญญาหนึ่งคุณต้องบันทึกสองค่าจาก SHOW SLAVE STATUS\G
ค่าทั้งสองนี้แสดงถึงคำแถลง SQL ล่าสุดที่มาจาก Master และถัดไปจะถูกเรียกใช้บน Slave
มีข้อควรระวังสำคัญประการหนึ่ง: ตราบใดที่ M1 และ M2 กำลังอัปเดตฐานข้อมูลที่ไม่เกิดร่วมกันร่วมกันอัลกอริทึมนี้น่าจะใช้ได้
วิธีการแก้ปัญหาของ Rolando มีข้อแม้มากมาย กระแสข้อมูลแรกที่เป็นแบบจำลองหนึ่งไม่จำเป็นต้องจำลองแบบในขณะที่งานอื่น ๆ สิ่งนี้จะทำให้คุณมีช่วงเวลาที่ทาสของคุณไม่ซิงค์กัน ตอนนี้คุณต้องเล่นฉากการทรงตัวที่ละเอียดอ่อนเพื่อให้แน่ใจว่าแต่ละคนจะมีเวลาพอที่จะทันได้เมื่อมันมี
ตามที่อธิบายไว้คุณยังต้องเล่นผู้ดูแลตำแหน่งบันทึกตำแหน่งเพื่อเปลี่ยนกลับไปเป็น นี่ดูเหมือนจะเป็นบั๊กเปิดหน้าต่างสำหรับข้อมูลที่ขาดหายไปหรือไม่สอดคล้องกันหรือแม้กระทั่งทำลายการจำลองแบบเมื่อเกิดข้อผิดพลาด
ฉันอยากจะแนะนำเพียงใช้อินสแตนซ์ mysql หลายรายการ ไม่มีอะไรหยุดคุณไม่ให้รัน mysql สองตัวหรือมากกว่าบนเครื่องเดียวกัน ทั้งคู่ไม่สามารถทำงานบนพอร์ตเดียวกันได้ ฉันไม่เห็นว่านี่เป็นปัญหา แต่เนื่องจากไคลเอนต์และไลบรารีทุกแห่งอนุญาตให้คุณระบุสิ่งอื่นนอกเหนือจาก 3306
เพียงระบุพอร์ต = 3307 (หรืออะไรก็ตามในไฟล์. cnf)
คุณจะต้องดูแลให้มั่นใจว่าบัฟเฟอร์พูลที่กำหนดค่าแยกกันและการกำหนดค่าหน่วยความจำอื่น ๆ นั้นไม่ได้ขัดแย้งกัน นี่เป็นประโยชน์อย่างแท้จริงแม้ว่าคุณจะสามารถปรับการตั้งค่าเหล่านั้นให้ตรงกับข้อกำหนดเฉพาะของฐานข้อมูลแต่ละตัวที่กำลังทำซ้ำ
วิธีนี้คุณจะมีสตรีมการจำลองแบบสองสตรีมที่รันในเซิร์ฟเวอร์เดียวกัน ไม่เคยอยู่ข้างหลังไม่จำเป็นต้องเก็บหนังสือไม่ต้องใช้สคริปต์ "สลับเปลี่ยน"
Fan in (การจำลองแบบหลายแหล่ง) จะได้รับการสนับสนุนจาก MySQL 5.7
มีการปล่อยแล็บที่นี่: http://labs.mysql.com/
MariaDB ซึ่งสามารถใช้แทนการแทนที่สำหรับ MySql สามารถใช้ได้ รองรับจากรุ่น 10.2
ปัญหาเกี่ยวกับการรองรับ Mysql 5.7 นั้นเป็นสิ่งจำเป็นสำหรับ GTID ซึ่งหมายความว่าคุณต้องเปลี่ยนมาสเตอร์เช่นกันในกรณีของ MariaDb กรณีนี้ไม่ได้เป็นเช่นนั้น
ตัวอย่าง / HowTo link: http://www.skysql.com/blogs/dean-ellis/multi-source-replication-mariadb-100