ในการจำลองแบบ MySQL Master / Slave จะเกิดอะไรขึ้นถ้าฉันเขียนไปยัง Slave


17

หลายคำถาม

  • รายการ Slave จะยังคงอยู่จนกว่าจะมีการแทรก / อัปเดต / ลบไปยังตารางใน Master ที่อาจส่งผลกระทบต่อ Slave?

  • ถ้าไม่ฉันจะแน่ใจได้อย่างไรว่า Slave ซิงค์กับ Master ต่อไป (โดยการลบรายการ Slave หรือคัดลอกรายการนั้นไปยัง Master ด้วยตนเอง)

  • ที่สำคัญที่สุดฉันจะตรวจสอบได้อย่างไรว่าตารางนั้นไม่ซิงค์กัน?


โปรดอธิบายคำถามของคุณให้ถูกต้อง ...
อับดุลมานาฟ

1
ความสัมพันธ์แบบมาสเตอร์ / ทาสไม่ใช่การซิงค์ทางเดียวจากต้นแบบไปเป็นทาส แต่ไม่ใช่ในทางกลับกันใช่ไหม ฉันกำลังถามว่าจะเกิดอะไรขึ้นถ้าคุณเขียนถึงทาสในการตั้งค่าแบบนี้
kfmfe04

คำตอบ:


14

ตราบใดที่คุณไม่ทำคำสั่ง INSERT / UPDATE / DELETE โดยตรงบน Slave Slave ของคุณควรจะใช้ได้ มิฉะนั้นการจำลองแบบ MySQL อาจแตกถ้าคุณแทรกแถวใหม่ใน mydb.mytable บน Slave และผ่านการจำลองแบบ Slave จะตรวจสอบ INSERT ของแถวไปยัง mydb.mytable ด้วยคีย์หลักเดียวกัน สิ่งนี้สร้างข้อผิดพลาด 1,062 (คีย์ซ้ำ)

วิธีเดียวที่คุณสามารถเขียนถึง Slave โดยไม่ทำลาย MySQL Replication คือ:

  • Master มีฐานข้อมูล db1, db2, db3
  • Slave กำลังจำลองฐานข้อมูล db1, db2, db3 จาก Master
  • คุณทำงานCREATE DATABASE db4;บน Slave
  • คุณทำ INSERTs / UPDATEs / DELETEs เพื่อ db4 บน Slave เท่านั้น
  • คุณไม่ได้ทำ INSERTs / UPDATEs / DELETEs เฉพาะกับ db1, db2, db3 บน Slave เท่านั้น

ในการตรวจสอบว่า Master และ Slave ไม่ซิงค์โดยไม่ต้องดาวน์โหลดเครื่องมือใด ๆ ให้เลือกตารางใด ๆ และเรียกใช้CHECKSUM Table กับตารางบน Master และสำเนาของ Slave ของตารางเดียวกัน

ตัวอย่าง

หากคุณมีตารางmydb.mytableให้รันคำสั่งกับมัน:

mysql> CHECKSUM TABLE mydb.mytable;

หากค่าไม่กลับมาเหมือนเดิมแสดงว่าบางสิ่งไม่ซิงค์กัน

หากคุณต้องการตรวจสอบโต๊ะจำนวนมากคุณสามารถลง MAATKIT ของ Percona ได้ คุณจะต้องใช้เครื่องมือเฉพาะสองชุด (Percona ยังมีชุดเครื่องมือ Percona ที่แยกมาจาก MAATKIT ซึ่งกำลังได้รับการสนับสนุนเพิ่มเติม)

หรือ

pt-table-checksumจะดำเนินการตารางตรวจสอบกับตารางทั้งหมดใน Master และ Slave คุณสามารถกำหนดค่าให้ทำฐานข้อมูลทั้งหมดในฐานข้อมูลเฉพาะ

pt-table-syncสามารถเรียกใช้บน Slave เทียบกับตารางใดก็ได้ การใช้ตัวเลือก --print และ --sync-to-master คุณสามารถดูว่าคำสั่ง SQL ใดที่ต้องถูกเรียกใช้บน Slave เพื่อให้ตรงกับ Master อย่างสมบูรณ์ เครื่องมือนี้ใช้ไม่ได้กับตารางที่ไม่มีคีย์หลักหรือรหัสที่ไม่ซ้ำ

ฉันใช้ MAATKIT มาหลายปีแล้ว ฉันยังคงทำ ฉันยังไม่ได้ลอง Percona Toolkit แต่ฉันแน่ใจว่ามันควรจะมีคุณภาพเช่นเดียวกับ MAATKIT


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