คำตอบสำหรับคำถามของคุณโดยตรงคือใช่ แต่ขึ้นอยู่กับรุ่นของ MySQL ที่คุณใช้งาน ก่อน MySQL 5.5 การจำลองแบบจะทำงานดังนี้:
- ปริญญาโทดำเนินการ SQL
- Master บันทึกเหตุการณ์ SQL ในบันทึกไบนารี
- Slave อ่านกิจกรรม SQL จากบันทึกไบนารีหลัก
- Slave จัดเก็บเหตุการณ์ SQL ในบันทึกการทำงานรีเลย์ผ่านเธรด I / O
- Slave อ่านกิจกรรม SQL ถัดไปจากบันทึกการส่งผ่าน SQL Thread
- Slave เรียกใช้งาน SQL
- Slave Acknowledges Master of the Execution สมบูรณ์ของเหตุการณ์ SQL
ในฐานะของ MySQL 5.5, ใช้Semisynchronous Replicationตอนนี้การจำลองแบบจะทำงานดังนี้:
- ปริญญาโทดำเนินการ SQL
- Master บันทึกเหตุการณ์ SQL ในบันทึกไบนารี
- Slave อ่านกิจกรรม SQL จากบันทึกไบนารีหลัก
- Slave Acknowledges Master of Receipt ของเหตุการณ์ SQL
- Slave จัดเก็บเหตุการณ์ SQL ในบันทึกการทำงานรีเลย์ผ่านเธรด I / O
- Slave อ่านกิจกรรม SQL ถัดไปจากบันทึกการส่งผ่าน SQL Thread
- Slave เรียกใช้งาน SQL
- Slave Acknowledges Master of the Execution สมบูรณ์ของเหตุการณ์ SQL
กระบวนทัศน์ใหม่นี้จะอนุญาตให้ Slave ซิงค์กับเจ้านายได้ใกล้ชิดยิ่งขึ้น
อย่างไรก็ตามเวลาแฝงภายในเครือข่ายอาจขัดขวาง MySQL Semisync Replication ไปจนถึงจุดที่มันแปลงกลับไปเป็นแบบจำลองแบบอะซิงโครนัสแบบเก่า ทำไม หากการหมดเวลาเกิดขึ้นโดยไม่มีการใช้ทาสใด ๆ ที่ยอมรับการทำธุรกรรมมาสเตอร์จะเปลี่ยนเป็นการจำลองแบบอะซิงโครนัส เมื่อทาสกึ่งซิงโครนัสอย่างน้อยหนึ่งตัวจับได้ต้นแบบจะกลับไปที่การจำลองแบบซิงโครนัส
อัพเดท 2011-08-08 14:22 EDT
การกำหนดค่าของ MySQL 5.5 Semisynchronous Replication นั้นตรงไปตรงมา
ขั้นตอนที่ 1) เพิ่มบรรทัดสี่ (4) เหล่านี้ใน /etc/my.cnf
[mysqld]
plugin-dir=/usr/lib64/mysql/plugin
#rpl_semi_sync_master_enabled
#rpl_semi_sync_master_timeout=5000
#rpl_semi_sync_slave_enabled
ขั้นตอนที่ 2) รีสตาร์ท MySQL
service mysql restart
ขั้นตอนที่ 3) เรียกใช้คำสั่งเหล่านี้ในไคลเอนต์ MySQL
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
ขั้นตอนที่ 4) ยกเลิกหมายเหตุตัวเลือกสามตัวเลือก rpm_semi_sync หลังจากตัวเลือก plugin-dir
[mysqld]
plugin-dir=/usr/lib64/mysql/plugin
rpl_semi_sync_master_enabled
rpl_semi_sync_master_timeout=5000
rpl_semi_sync_slave_enabled
ขั้นตอนที่ 5) รีสตาร์ท MySQL
service mysql restart
เสร็จหมดแล้ว !!! ตอนนี้เพียงตั้งค่าการจำลองแบบ MySQL ตามปกติ