MySQL Replication
MySQL นั้นสามารถทำ replication กันได้
ความรู้พื้นฐานของการทำReplication บน MySQL
1.Master/Slave replication
2.Master จะทำการเขียน query ทั้งหมดใส่ลงใน binary log
3.Slaves จะทำการอ่าน binary log จาก Master แล้วนำมา run ที่เครื่อวตัวเอง
4.Master สามารถมีจำนวน Slave เท่าไหร่ก็ได้
5.แต่ Slave จะมีได้แค่ 1 Master
6.Server หนึ่งจะเป็นได้ทั้ง Master และ Slave
7.ปกติแล้ว Master จะไม่รู้ว่ามี Slave อยู่ คือจะเขียน query ทั้งหมดลง log ไปเรื่อยๆ แต่จะไม่รู้หรอกว่าจะมี Slave ไหนมาอ่าน
8.Master และ Slave จะสามารถเลือกได้ว่าจะเขียน หรือ อ่าน query อันไหน ในระดับฐานข้อมูล (Database) หรือในระดับตาราง (Table) เช่น Master 1 อาจจะเลือกเขียน query ที่ทำงานบน Database A ในขณะที่ Slave 2 จะอ่าน query ที่มีผลกระทบต่อ Table ก และ Table ข เท่านั้น
9.Replication นั้นจะเป็นแบบ asynchronous คือ Master จะเขียนลง log ไปเรื่อยๆ แต่จะไม่มีการรับประกันว่า Slave ทั้งหลายจะอ่าน log เหล่านั้นทันทีหรือไม่
ทำไมถึงต้องมีการทำ Replication?
1.เพราะต้องการเครื่องสำรองที่พร้อมมีการทำงานทันที
2.ทำให้การทำสำรองข้อมูลง่ายดายขึ้น
3.สามารถทำ Load balancing ได้
4.สามารถทำการ Testing Application กับข้อมูลจริงได้
Replication ของ MySQL กับ Server รุ่น 3.23.xx
1.Slave ทำการติดต่อ (connect) กับ Master
2.อ่าน query อันหนึ่งจาก log ของ Master
3.นำ query นั้นมา run ที่เครื่อง Slave
4.ตรวจสอบผลลัพธ์ เพื่อดูว่าผลลัพธ์ของทั้ง 2 Server มีความสอดคล้อง (consistent) กันหรือไม่
5.อ่าน query ต่อๆไป และทำซ้ำขั้นตอนที่ 2 ถึง 4
* ปัญหาคือ การทำงานจะช้า และอาจจะมี delay ระหว่าง network หรือ query สูญหายได้
Replication ของ MySQL กับ Server รุ่น 4.0.x
1.Slave เป็น multi-threaded
2.“Relay Thread” จะทำการติดต่อ (connect) ไปที่ Master แล้วอ่าน query หลายๆ อันมาเก็บไว้ที่ spool ของตัวเอง
3.“SQL Thread” จะอ่าน query จาก log (spool) ของตนเอง แล้วทำตามขั้นตอนที่ 2-4 ของรุ่น 3.23.xx
* ทำงานเร็วกว่ารุ่น 3.23.xx และจะทำให้ปัญหา query หาย ลดลง
ส่วนวิธีจะมาเขียนต่อวันถัดไปครับ
![รูปภาพ](/forum/uploads/photo-thumb-1270.jpg?_r=0)
MySQL สามารถทำ replication ได้ครับ
เริ่มโดย หยุดอะตอมใจ, Mar 22 2005 08:58 PM
ไม่มีการตอบกลับในกระทู้นี้