ทาสของ MySQL สามารถเป็นหลักในเวลาเดียวกันได้หรือไม่?


17

ฉันอยู่ในขั้นตอนการโอนย้ายเซิร์ฟเวอร์ 2 DB (Master & Slave) ไปยังเซิร์ฟเวอร์ DB สองเครื่องใหม่ (Master และ Slave)

DB1 - ปริญญาโท (การผลิต)

DB2 - Slave (การผลิต)

DB3 - ปรมาจารย์ใหม่

DB4 - Slave ใหม่

ขณะนี้ฉันมีการจำลองแบบตั้งค่าเป็น:

DB1 -> DB2
DB3 -> DB4

หากต้องการรับข้อมูลการผลิตที่จำลองแบบไปยังเซิร์ฟเวอร์ใหม่ฉันต้องการรับ "daisy chained" เพื่อให้มีลักษณะดังนี้:

DB1 -> DB2 -> DB3 -> DB4

เป็นไปได้ไหม เมื่อฉันรันshow master status;บน DB2 (ทาสใช้งานจริง) การครอบครอง binlog ดูเหมือนจะไม่เปลี่ยนแปลง:

+ + ------------------ ---------- + + -------------- ---- -------------- +
| ไฟล์ | ตำแหน่ง | Binlog_Do_DB | Binlog_Ignore_DB |
+ + ------------------ ---------- + + -------------- ---- -------------- +
| mysql-bin.000020 | 98 | | |
+ + ------------------ ---------- + + -------------- ---- -------------- +

ฉันสับสนเล็กน้อยว่าทำไมตำแหน่ง binlog จึงไม่เปลี่ยนแปลงบน DB2 โดยหลักการแล้วมันจะเป็นมาสเตอร์ของ DB3

คำตอบ:


16

binlog on DB2ไม่ได้อัปเดตการอัปเดตของ slave หากต้องการเชื่อมlog-slave-updatesโยงการจำลองแบบต้องใช้การตั้งค่าใน my.conf

http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_log-slave-updates


แต่คุณเขียนบันทึกสองครั้งครั้งเดียวในบันทึกการถ่ายทอดและอีกครั้งในไฟล์ binlog ทำไมไม่ทำซ้ำจาก slave โดยใช้บันทึกการถ่ายทอด?
— hpaknia

9

ใช่เป็นไปได้ :) สิ่งนี้เรียกว่าการจำลองแบบ "Master with Relay Slave" และมีเอกสารจำนวนมากเกี่ยวกับเรื่องนี้ในเน็ต

ผมอยากแนะนำให้คุณดูที่เอกสารอย่างเป็นทางการที่นี่

Btw ยังจะดูที่เหล่านี้ภาพนิ่ง พวกเขามีคำแนะนำบางอย่างเกี่ยวกับทอพอโลยีการจำลองแบบ

หวังว่านี่จะช่วยได้


3

ใช่ - คุณสามารถใช้เซิร์ฟเวอร์ mysql แบบเดซี่เชนได้คุณสามารถสร้างแบบจำลองแบบวงกลมด้วยเครื่องจักรสองเครื่องขึ้นไป เพียงจำไว้ว่าให้เปิดใช้งาน binloging บนทาสที่ทำหน้าที่เป็นนายเช่นกัน


1
การจำลองแบบวงกลมมีความเปราะบางอย่างเหลือเชื่อ มันไม่สมควรภายใต้สถานการณ์ส่วนใหญ่
— วอร์เนอร์

@Warner - นี่เป็นเพียงตัวอย่างของการตั้งค่าการจำลองที่ซับซ้อนยิ่งขึ้น
— pQd

เพื่อนไม่ปล่อยให้เซิร์ฟเวอร์เซิร์ฟเวอร์ mysql ของเพื่อนเดซี่เชน
— sjas

@sjas เว้นแต่ว่าพวกเขามีเหตุผลที่เฉพาะเจาะจงมากที่จะทำและเข้าใจผลที่อาจเกิดขึ้นจากการทำลายโซ่
— pQd

ขออภัย แต่ยังไม่มีความสะดวกสบายหลอกหลอนคุณในภายหลัง
— sjas

0

ใช่มันเป็นไปได้ คุณจำเป็นต้องมีสแนปชอตใหม่ของ DB2 เพื่อสร้าง DB3 ณ จุดนี้ถ้าคุณมีตำแหน่งที่ดีคุณสามารถใช้งานได้มากกว่าสำหรับ DB4 หรือถ่ายภาพอื่น ๆ ของ DB3

อย่าลืมตั้งค่าเฉพาะserver_idสำหรับแต่ละเซิร์ฟเวอร์

MySQL ประสิทธิภาพสูงเป็นหนังสือที่ยอดเยี่ยมสำหรับการอ้างอิงการบริหาร MySQL ขั้นสูง


ขณะนี้ DB2 เป็นเพียงทาส แต่ตำแหน่ง binlog ไม่เปลี่ยนแปลง ... คุณรู้หรือไม่ว่าเป็นเรื่องปกติ
— mmattax

Slave (DB2) เป็นข้อมูลล่าสุดกับ Master แต่ตำแหน่ง binlog ไม่เปลี่ยนแปลงฉันควรตรวจสอบอะไร?
— mmattax

ใช่ฉันยืนยันว่าฉันสามารถเปลี่ยนข้อมูลบน DB1 และมันถูกจำลองแบบไปยัง DB2 แต่ตำแหน่ง binlog ของ DB2 เหมือนกัน
— mmattax

ฉันคิดว่า DB @ ไม่ได้บันทึกการอัปเดตของทาสดังนั้นทำไมตำแหน่งไม่เปลี่ยนแปลง: dev.mysql.com/doc/refman/5.1/en/…
— mmattax

0

ทำไมไม่เพิ่ม DB3 เป็นสลาฟตัวใหม่จากนั้นเลื่อนมันไปเป็นมาสเตอร์เมื่อคุณพร้อมที่จะเปลี่ยน สิ่งนี้จะช่วยให้คุณได้รับประโยชน์เพิ่มเติมชั่วคราวจากการมีทาสหลายคนและลดหรือกำจัดการหยุดทำงานของคุณ


นั่นคือสิ่งที่ฉันกำลังทำ ...
— mmattax
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.