Latest article
Home >> Database >> MySQL Replication ทำงานอย่างไร?
MySQL Replication ทำงานอย่างไร?

MySQL Replication ทำงานอย่างไร?

เคยสงสัยไหมว่า MySQL Replication ทำงานอย่างไร และ อะไรคือ I/O Thread และ SQL Thread และทำงานอย่างไร?

MySQL Replication เป็นวิธีการทำ replication ข้อมูลไปยัง MySQL server เครื่องอื่นๆ (1 เครื่องหรือมากกว่า) ที่นิยมใช้งานกันอย่างแพร่หลาย โดยการทำงานจะเป็นแบบ Master -Slave กล่าวคือ Master จะทำหน้าที่ส่งข้อมูลให้กับเครื่อง Slave เพื่อทำการ update ข้อมูล หากมีการ update ข้อมูลบนเครื่อง Master

ข้อดีของ MySQL Replication คือช่วยให้เพิ่มประสิทธิภาพในการอ่านข้อมูลให้กับระบบ โดยกำหนดให้ ทุก update ให้ทำงานที่ Master ส่วนทุกคำสั่ง Select ให้ทำงานที่ Salve

สำหรับขั้นตอนการทำงานโดยละเอียดตั้งแต่การ update ข้อมูลบนเครื่อง Master จนไปถึงการ replicate ข้อมูลไปยังเครื่อง Slave จะมีขั้นตอนการทำงานตามด้านล่างนี้

ขั้นตอนการทำงานของ MySQL Replication (Asynchronous)

  1. User ทำการเปลี่ยนแปลงข้อมูลไม่ว่าจะเป็น insert, update, delete และอื่นๆ ไปยัง Master server
  2. Master serverจะทำการเขียนข้อมูลลง binary log โดยการเขียนข้อมูลลง Binary log จะเขียนเป็นลำดับ (serial)
  3. หลังจากเขียนข้อมูลลง binary log เรียบร้อยแล้วจะตอบกลับไปยัง user ว่าทำงานเรียบร้อยแล้ว
  4. Slave server ทำการอ่าน binary log ของ Master server ด้วย I/O Thread ซึ่งเป็น thread ที่ทำหน้าที่ในการอ่าน binary log ของ Master โดยรอรับสัญญาณการ update ข้อมูลจาก Master
  5. I/O Thread ทำการเขียนข้อมูลลงไปยัง Relay log
  6. SQL Thread บน slave server ทำการอ่าน Relay log
  7. SQL Thread ทำการ replay event log (update ข้อมูล) บน database (slave server)

MySQL Replication Asynchronous Work Flow

จากการทำงานของ MySQL Replication ข้างบนเป็นการทำงานแบบ Asynchronous ซึ่งข้อเสียคือ Master จะไม่สนใจว่า Slave จะทำการ update ข้อมูลเรียบร้อยแล้วหรือไม่ ซึ่งทำให้เกิดปัญหาเรื่องข้อมูลของเครื่อง Slave ไม่ตรงกับเครื่อง Master ดังนั้นใน MySQL 5.5 เป็นต้นไป จึงได้ออก feature ใหม่ขึ้นมาชื่อว่า Semi-synchronous ซึ่งจะช่วยให้ปัญหาเรื่องข้อมูลไม่ตรงกันน้อยลงหรือหมดไป

MySQL Replication แบบ Semi-synchronous จะมีขั้นตอนการทำงานที่เพิ่มเข้ามา คือ Master จะรอรับ Acknowledge จากเครื่อง Slave เพื่อให้แน่ใจว่าข้อมูลได้ทำการส่งต่อไปยัง Slave ได้สำเร็จ

ขั้นตอนการทำงานของ MySQL Replication แบบ Semi-synchronous

  1. User ทำการเปลี่ยนแปลงข้อมูลไม่ว่าจะเป็น insert, update, delete และอื่นๆ ไปยัง Master server
  2. Master serverจะทำการเขียนข้อมูลลง binary log โดยการเขียนข้อมูลลง Binary log จะเขียนเป็นลำดับ (serial)
  3. Slave server ทำการอ่าน binary log ของ Master server ด้วย I/O Thread ซึ่งเป็น thread ที่ทำหน้าที่ในการอ่าน binary log ของ Master โดยรอรับสัญญาณการ update ข้อมูลจาก Master
  4. I/O Thread ทำการเขียนข้อมูลลงไปยัง Relay log
  5. Slave ทำการ Acknowledge ไปยัง Master ว่าได้รับข้อมูลเรียบร้อยแล้ว
  6. Master ทำการะตอบกลับไปยัง user ว่าทำงานเรียบร้อยแล้ว
  7. SQL Thread บน slave server ทำการอ่าน Relay log
  8. SQL Thread ทำการ replay event log (update ข้อมูล) บน database (slave server)

MySQL Replication Semisynchronous Work Flow

I/O Thread และ SQL Thread ทำงานอิสระต่อกัน
การทำงานของ MySQL Replication เป็นแบบ asynchronous (ไม่สนใจว่า Slave server จะทำการ update ข้อมูลสำเร็จหรื่อไม่) แต่ใน version 5.5 เป็นต้นไป รองรับการทำงานแบบ Semisynchronous (ถ้าหากมี slave server เครื่องใดเครื่องหนึ่ง ทำการตอบกลับว่าได้รับข้อมูลแล้ว Master ก็จะเข้าใจว่าระบบทำการ replicate สมบูรณ์แล้ว)
การทำงานของ MySQL Replication จะทำงานแบบ serialized ดังนั้นจึงเกิดเหตุการ slave lag บ่อยครั้งเมื่อระบบมีการ update ข้อมูลจำนวนมาก

Incoming search terms:

  • mysql replication คือ
  • database replication คือ
  • mysql slave
  • mysql คือ
  • replication logs mysql คือ
  • sql database replication คือ
  • www geekbase in th
  • ตรวจสอบอย่างไรหลังจาก replication
  • ทำไมต้องทำ replicate data
  • ระบบการทำงาน db replication คือ
The following two tabs change content below.
Error: Unable to create directory wp-content/uploads/2018/11. Is its parent directory writable by the server?
I'm interested in: Database: MySQL and MariaDB, WebScaleSQL, SQL Tuning, Database sharding Search engine: Elasticsearch Web: Apache tuning, web optimization and SEO Platform: log platform
Error: Unable to create directory wp-content/uploads/2018/11. Is its parent directory writable by the server?
Facebook Iconfacebook like buttonTwitter Icontwitter follow button
Copy Protected by Chetan's WP-Copyprotect.