目次
1. MySQL Replication คืออะไร? ภาพรวมและการใช้งาน
MySQL Replication เป็นฟีเจอร์ที่ทำการซิงโครไนซ์สำเนาฐานข้อมูลไปยังเซิร์ฟเวอร์อื่นแบบเรียลไทม์ ทำให้สามารถเพิ่มความทนทานและประสิทธิภาพของฐานข้อมูลได้ ต่อไปนี้จะอธิบายอย่างละเอียดว่า MySQL Replication ถูกใช้ในสถานใดบ้างและกลไกการทำงานของมันภาพรวมของ MySQL Replication
MySQL Replication ทำงานโดยใช้โครงสร้างของ เซิร์ฟเวอร์หลัก และ เซิร์ฟเวอร์สำรอง เพื่อแชร์ข้อมูลฐานข้อมูลระหว่างหลายเซิร์ฟเวอร์ โดยเฉพาะอย่างยิ่ง เซิร์ฟเวอร์หลักจะบันทึกการอัปเดตข้อมูลลงในบันทึกไบนารี และเซิร์ฟเวอร์สำรองจะอ่านและนำไปใช้เพื่อทำการซิงโครไนซ์ข้อมูล ดังนั้น หากเซิร์ฟเวอร์หลักเกิดข้อขัดข้อง สามารถสลับไปใช้เซิร์ฟเวอร์สำรองเพื่อให้บริการต่อเนื่องได้การใช้งาน MySQL Replication
MySQL Replication ถูกนำไปใช้ในหลายกรณีต่อไปนี้อย่างกว้างขวาง- การรับประกันความพร้อมใช้งานสูง:ในกรณีที่เกิดข้อขัดข้อง สามารถใช้เซิร์ฟเวอร์สำรองเพื่อลดระยะเวลาการหยุดทำงานให้น้อยที่สุด
- การกระจายภาระงาน:การส่งคิวรีอ่านอย่างเดียวไปยังเซิร์ฟเวอร์สำรองช่วยกระจายภาระของเซิร์ฟเวอร์หลัก
- การรักษาข้อมูลและการสำรองข้อมูล:Replication ทำการคัดลอกข้อมูลแบบเรียลไทม์ ทำให้สามารถใช้เป็นการสำรองข้อมูลได้
ประเภทของ Replication
MySQL Replication มีประเภทต่อไปนี้ตามวิธีการซิงโครไนซ์ข้อมูล- Replication แบบอะซิงโครนัส:เซิร์ฟเวอร์หลักดำเนินการต่อโดยไม่รอการส่งข้อมูลอัปเดตไปยังเซิร์ฟเวอร์สำรอง ทำให้ตอบสนองได้เร็ว แต่ในกรณีที่เกิดข้อขัดข้อง บางส่วนของข้อมูลอาจไม่ถึงเซิร์ฟเวอร์สำรอง
- Replication แบบกึ่งซิงโครนัส:ดำเนินการต่อหลังจากยืนยันว่าข้อมูลได้ถูกสะท้อนบนเซิร์ฟเวอร์สำรองแล้ว ทำให้มีความน่าเชื่อถือสูงกว่าแบบอะซิงโครนัส แต่ความเร็วในการตอบสนองจะช้าก่อนหน่อย
2. แนวคิดพื้นฐานของการทำสำเนา MySQL
เพื่อทำความเข้าใจการทำสำเนา MySQL จำเป็นต้องเข้าใจบทบาทของบันทึกไบนารีและGTID(Global Transaction ID) ซึ่งเป็นส่วนสำคัญในกระบวนการทำสำเนา สิ่งเหล่านี้เป็นพื้นฐานที่ทำให้ข้อมูลถูกทำสำเนาอย่างแม่นยำ。บทบาทของมาสเตอร์และสเลฟ
ในการทำสำเนา MySQL, เซิร์ฟเวอร์มาสเตอร์และเซิร์ฟเวอร์สเลฟมีบทบาทที่แตกต่างกัน เซิร์ฟเวอร์มาสเตอร์บันทึกการอัปเดตข้อมูลลงในบันทึกไบนารีและส่งข้อมูลนั้นไปยังสเลฟ เซิร์ฟเวอร์สเลฟจะนำบันทึกที่ได้รับจากมาสเตอร์ไปใช้และอัปเดตข้อมูล ด้วยวิธีนี้สเลฟจึงสามารถรักษาข้อมูลที่อัปเดตล่าสุดของมาสเตอร์ได้。บันทึกไบนารีและบันทึกรีเลย์
พื้นฐานของการทำสำเนา MySQL ใช้บันทึกสองประเภทต่อไปนี้。- บันทึกไบนารี(Binary Log)
- บันทึกไบนารีเป็นบันทึกการอัปเดตข้อมูลบนเซิร์ฟเวอร์มาสเตอร์ (เช่น INSERT、UPDATE、DELETE) ซึ่งทำให้เซิร์ฟเวอร์สเลฟสามารถรักษาสถานะข้อมูลเช่นเดียวกับมาสเตอร์ได้。
- บันทึกรีเลย์(Relay Log)
- บันทึกรีเลย์เป็นบันทึกที่เซิร์ฟเวอร์สเลฟบันทึกบันทึกไบนารีที่ได้รับจากมาสเตอร์ไว้ในระบบของตนเอง เธรด SQL ของสเลฟจะดำเนินการบันทึกรีเลย์นี้ตามลำดับเพื่อสะท้อนการเปลี่ยนแปลงของข้อมูล。
GTID(Global Transaction ID) คืออะไร
GTID เป็นกลไกที่กำหนด ID ที่ไม่ซ้ำกันให้กับแต่ละทรานแซกชัน ช่วยรักษาความสอดคล้องของการซิงโครไนซ์ระหว่างสเลฟหลายตัว การใช้ GTID ทำให้ไม่ต้องระบุตำแหน่งของบันทึกไบนารี และสามารถนำทรานแซกชันที่ยังไม่ได้รับจากมาสเตอร์ไปใช้กับสเลฟโดยอัตโนมัติ ทำให้การจัดการง่ายขึ้นอย่างมาก。ข้อดีของ GTID
- การระบุที่ไม่ซ้ำกัน:แต่ละทรานแซกชันจะได้รับ GTID ที่ไม่ซ้ำกัน ทำให้ทราบได้ชัดเจนว่าทรานแซกชันใดได้ถูกนำไปใช้แล้ว。
- การกู้คืนง่าย:ด้วยการใช้ GTID แม้มาสเตอร์หรือสเลฟจะรีสตาร์ท จะมีการนำทรานแซกชันที่ยังไม่ได้รับการนำไปใช้เท่านั้นมานำไปใช้ใหม่。
- เพิ่มประสิทธิภาพการจัดการปฏิบัติการ:แม้ในสภาพแวดล้อมขนาดใหญ่ที่มีสเลฟหลายเครื่อง ก็สามารถจัดการได้ง่ายโดยคงความสอดคล้องของทรานแซกชัน。
gtid_mode=ON
และ enforce_gtid_consistency=ON
บนมาสเตอร์และสเลฟ การตั้งค่าเหล่านี้ทำให้สามารถเปิดใช้งานการทำสำเนาโดยใช้ GTID ได้。 ในส่วนต่อไปจะอธิบายขั้นตอนการตั้งค่าการทำสำเนา MySQL อย่างละเอียด。
3. ขั้นตอนการตั้งค่า MySQL Replication
ในส่วนนี้จะแนะนำขั้นตอนการตั้งค่า MySQL Replication อย่างละเอียด โดยการทำตามขั้นตอนต่อไปนี้จะช่วยให้คุณตั้งค่าระบบ master‑slave เบื้องต้นและทำให้ข้อมูลซิงโครไนซ์แบบเรียลไทม์การตั้งค่าเซิร์ฟเวอร์ Master
ก่อนอื่นให้แก้ไขไฟล์ตั้งค่าเซิร์ฟเวอร์ Master (โดยทั่วไปคือmy.cnf
หรือ my.ini
) เพื่อเปิดใช้งาน binary log และตั้งค่า Server ID- แก้ไขไฟล์ตั้งค่า
- เพิ่มการตั้งค่าดังต่อไปนี้ในส่วน
[mysqld]
และตั้งค่า Server ID เป็นค่าที่ไม่ซ้ำ (เช่น 1)
[mysqld]
server-id=1
log-bin=mysql-bin
server-id
ต้องระบุหมายเลขที่ไม่ซ้ำกันสำหรับแต่ละเซิร์ฟเวอร์ และlog-bin
หมายถึงการเปิดใช้งาน binary log
- สร้างผู้ใช้สำหรับ Replication
- สร้างผู้ใช้เฉพาะสำหรับ Replication บนเซิร์ฟเวอร์ Master และมอบสิทธิ์ที่จำเป็น
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
- ผู้ใช้นี้จำเป็นสำหรับให้เซิร์ฟเวอร์ Slave เข้าถึงข้อมูลของ Master
- ตรวจสอบสถานะของ Master
- ตรวจสอบไฟล์ binary log ปัจจุบันและตำแหน่ง (position) ของมัน ข้อมูลนี้จำเป็นสำหรับการตั้งค่าเซิร์ฟเวอร์ Slave
SHOW MASTER STATUS;
- ค่า
File
(ชื่อไฟล์ log) และPosition
(ตำแหน่ง) ที่แสดงจากคำสั่งนี้จะใช้ในการตั้งค่า Slave
การตั้งค่าเซิร์ฟเวอร์ Slave
ต่อไปให้แก้ไขไฟล์ตั้งค่าเซิร์ฟเวอร์ Slave เพื่อกำหนด Server ID และข้อมูลของ Master- แก้ไขไฟล์ตั้งค่า
- เซิร์ฟเวอร์ Slave ก็ต้องตั้งค่า
server-id
ให้เป็นค่าที่ไม่ซ้ำ (เช่น 2) โดยต้องแตกต่างจาก Server ID ของ Master
[mysqld]
server-id=2
- เพื่อป้องกันการเขียนข้อมูลบน Slave มักตั้งค่า
read_only=ON
ด้วย
- ตั้งค่าข้อมูล Master บน Slave
- บนเซิร์ฟเวอร์ Slave ให้รันคำสั่งต่อไปนี้เพื่อระบุ hostname ของ Master, ผู้ใช้, ชื่อไฟล์ binary log และตำแหน่ง
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123;
- ใส่ค่า
MASTER_LOG_FILE
และMASTER_LOG_POS
ที่ได้จากการตรวจสอบบน Master ก่อนหน้านี้
- เริ่มต้น Replication
- บนเซิร์ฟเวอร์ Slave ให้รันคำสั่งต่อไปนี้เพื่อเริ่ม Replication
START SLAVE;
การตรวจสอบสถานะของ Replication
ตรวจสอบว่า Replication ระหว่าง Master และ Slave ถูกตั้งค่าอย่างถูกต้อง- ตรวจสอบสถานะของ Master
SHOW MASTER STATUS;
- ตรวจสอบสถานะของ Slave
SHOW SLAVE STATUSG;
- หากค่า
Slave_IO_Running
และSlave_SQL_Running
แสดงเป็นYes
แสดงว่า Replication ทำงานอย่างปกติ
4. ประเภทและการประยุกต์ใช้การทำสำเนา
MySQL Replication มี 2 ประเภทตามวิธีการซิงโครไนซ์ข้อมูลคือ การทำสำเนาแบบอะซิงโครนัส และ การทำสำเนาแบบกึ่งซิงโครัส การเข้าใจลักษณะและเกณฑ์การเลือกตามสถานการณ์การใช้งานจะช่วยเพิ่มประสิทธิภาพและความน่าเชื่อถือของระบบได้ นอกจากนี้ ยังอธิบายข้อดีของการตั้งค่าการทำสำเนาโดยใช้ GTID (Global Transaction Identifier) อีกด้วยความแตกต่างระหว่างการทำสำเนาแบบอะซิงโครนัสและการทำสำเนาแบบกึ่งซิงโครนัส
1. การทำสำเนาแบบอะซิงโครนัส
การทำสำเนาแบบอะซิงโครนัสจะตอบกลับไคลเอนต์ทันทีเมื่อเซิร์ฟเวอร์หลักเสร็จสิ้นการทำธุรกรรม นั่นหมายความว่าแม้การซิงโครไนซ์ข้อมูลไปยังเซิร์ฟเวอร์สำรองจะล่าช้า แต่เซิร์ฟเวอร์หลักยังสามารถประมวลผลคำขอใหม่ได้ ดังนั้นจึงมีประสิทธิภาพการตอบสนองที่ดีและเหมาะกับระบบที่มุ่งเน้นการกระจายภาระงาน อย่างไรก็ตาม ในกรณีที่ข้อผิดพลาด ข้อมูลที่ยังไม่ได้สะท้อนบนเซิร์ฟเวอร์สำรองอาจสูญหายได้ จึงต้องระมัดระวัง2. การทำสำเนาแบบกึ่งซิงโครนัส
การทำสำเนาแบบกึ่งซิงโครนัสจะตอบกลับไคลเอนต์หลังจากที่เซิร์ฟเวอร์หลักยืนยันว่าการส่งข้อมูลไปยังเซิร์ฟเวอร์สำรองเสร็จสมบูรณ์แล้ว ซึ่งช่วยเพิ่มความสอดคล้องของข้อมูล แต่ก็อาจทำให้เวลาตอบสนองของธุรกรรมยาวนานขึ้นเนื่องจากต้องรอการสะท้อนบนเซิร์ฟเวอร์สำรอง การทำสำเนาแบบกึ่งซิงโครนัสเหมาะกับระบบที่ต้องการ ความสอดคล้องของข้อมูลสูง หรือสภาพแวดล้อมที่ให้ความสำคัญกับความน่าเชื่อถือของข้อมูลเป็นอันดับแรกการทำสำเนาโดยใช้ GTID
GTID (Global Transaction Identifier) เป็นกลไกที่กำหนด ID ที่ไม่ซ้ำกันให้กับแต่ละธุรกรรมเพื่อรักษาความสอดคล้องของธุรกรรมระหว่างเซิร์ฟเวอร์หลักและสำรอง การเปิดใช้งาน GTID ทำให้การจัดการการทำสำเนาเป็นเรื่องง่ายขึ้นเมื่อเทียบกับการทำสำเนาแบบระบุตำแหน่งบันทึกไบนารีแบบเดิมข้อดีของ GTID
- การปรับปรุงความสอดคล้องของข้อมูล:ด้วย GTID สามารถตรวจจับธุรกรรมที่ยังไม่ได้ถูกนำไปใช้บนเซิร์ฟเวอร์สำรองโดยอัตโนมัติ ทำให้รักษาความสอดคล้องของข้อมูลได้ง่ายขึ้น
- การทำให้การจัดการการทำสำเนาง่ายขึ้น:การใช้ GTID ทำให้การสลับหรือกู้คืนเซิร์ฟเวอร์หลักและสำรองทำได้อย่างมีประสิทธิภาพ เนื่องจากไม่ต้องระบุตำแหน่งบันทึกไบนารี ทำให้การจัดการเป็นเรื่องง่าย
การตั้งค่า GTID Replication
เพื่อใช้ GTID จำเป็นต้องเพิ่มตัวเลือกต่อไปนี้ในไฟล์ตั้งค่าของเซิร์ฟเวอร์หลักและสำรองและเปิดใช้งาน การตั้งค่าเซิร์ฟเวอร์หลัก[mysqld]
server-id=1
log-bin=mysql-bin
gtid_mode=ON
enforce_gtid_consistency=ON
การตั้งค่าเซิร์ฟเวอร์สำรอง[mysqld]
server-id=2
gtid_mode=ON
enforce_gtid_consistency=ON
read_only=ON
ในสภาพแวดล้อมที่เปิดใช้งาน GTID เพียงแค่ใช้คำสั่ง CHANGE MASTER TO
เพื่อตั้งค่าข้อมูลของเซิร์ฟเวอร์หลักบนเซิร์ฟเวอร์สำรอง ระบบการทำสำเนาโดยใช้ GTID จะทำงานโดยอัตโนมัติ
ในส่วนต่อไปนี้ จะอธิบายวิธีการบำรุงรักษาการทำสำเนา MySQL และจุดสำคัญในการตรวจสอบการจัดการการดำเนินงาน
5. การบำรุงรักษาและการตรวจสอบการทำสำเนา
เพื่อให้การดำเนินการ MySQL Replication อย่างเหมาะสม จำเป็นต้องมีการบำรุงรักษาและการตรวจสอบเป็นประจำ ในส่วนนี้จะแนะนำคำสั่งเพื่อยืนยันว่าการทำสำเนาทำงานอย่างถูกต้องและวิธีการจัดการกับข้อผิดพลาดทั่วไปวิธีตรวจสอบสถานะการทำสำเนา
เพื่อให้เข้าใจสถานะของการทำสำเนา ให้ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบสถานะการซิงค์ระหว่างมาสเตอร์และสเลฟตรวจสอบสถานะของมาสเตอร์
สถานะการทำสำเนาบนเซิร์ฟเวอร์มาสเตอร์สามารถตรวจสอบได้ด้วยคำสั่งSHOW MASTER STATUS
คำสั่งนี้จะแสดงชื่อไฟล์บันทึกไบนารีและตำแหน่งปัจจุบัน เพื่อให้ตรวจสอบการอัปเดตล่าสุดที่ควรส่งไปยังสเลฟSHOW MASTER STATUS;
ผลลัพธ์ของคำสั่งนี้จะมีรายการต่อไปนี้File
:ชื่อไฟล์บันทึกไบนารีปัจจุบันที่มาสกำลังเขียนPosition
:ตำแหน่งปัจจุบันในบันทึกไบนารีBinlog_Do_DB
และBinlog_Ignore_DB
:ฐานข้อมูลที่เป็นเป้าหมายของการทำสำเนา
ตรวจสอบสถานะของสเลฟ
สถานะการทำสำเนาบนเซิร์ฟเวอร์สเลฟสามารถตรวจสอบได้ด้วยคำสั่งSHOW SLAVE STATUS
ผลลัพธ์ของคำสั่งนี้จะมีข้อมูลที่ใช้ตัดสินว่าเซิร์ฟเวอร์สเลฟทำงานอย่างถูกต้องหรือไม่SHOW SLAVE STATUSG;
สำคัญที่ควรตรวจสอบมีดังนี้Slave_IO_Running
และSlave_SQL_Running
:หากทั้งสองเป็นYes
แสดงว่าสเลฟทำงานอย่างปกติSeconds_Behind_Master
:แสดงจำนวนวินาทีที่สเลฟล่าช้ากว่ามาสเตอร์ โดยค่าที่เป็น 0 ถือเป็นสภาพที่ดีที่สุด
การแก้ไขปัญหาการทำสำเนา
ปัญหาที่มักเกิดขึ้นระหว่างการดำเนินการทำสำเนาได้แก่ข้อผิดพลาดการเชื่อมต่อและความไม่สอดคล้องของข้อมูล ด้านล่างเป็นข้อความแสดงข้อผิดพลาดทั่วไปและวิธีการแก้ไข1. ข้อผิดพลาดการเชื่อมต่อ
หากSlave_IO_Running
เป็น No
หมายความว่าสเลฟไม่สามารถเชื่อมต่อกับมาสเตอร์ได้ โปรดลองวิธีแก้ต่อไปนี้- ตรวจสอบชื่อโฮสต์หรือที่อยู่ IP ของเซิร์ฟเวอร์มาสเตอร์:ยืนยันว่าที่อยู่ของมาสเตอร์ถูกต้อง
- ตรวจสอบการตั้งค่าไฟร์วอลล์:ยืนยันว่าพอร์ตที่จำเป็น (โดยทั่วไปคือ 3306) เปิดอยู่
2. ความไม่สอดคล้องของข้อมูล
หากมีข้อความข้อผิดพลาดในLast_Error
แสดงว่ามีความไม่สอดคล้องของข้อมูลระหว่างมาสเตอร์และสเลฟ ในกรณีที่เกิดความไม่สอดคล้องนี้ จำเป็นต้องหยุดสเลฟชั่วคราวและทำการแก้ไขSTOP SLAVE;
# หลังการแก้ไขให้เริ่มใหม่
START SLAVE;
3. การแก้ไขความล่าช้า
สาเหตุที่สเลฟล่าช้าอาจมาจากประสิทธิภาพของฮาร์ดแวร์สเลฟหรือปัญหาเครือข่าย หากจำเป็น การเสริมโครงสร้างของสเลฟอาจช่วยปรับปรุงได้ ในส่วนต่อไป เราจะเจาะลึกรายละเอียดของปัญหาในการทำสำเนาและวิธีแก้ไขเพิ่มเติม6. ปัญหาที่พบบ่อยและวิธีการแก้ไข
ใน MySQL Replication อาจเกิดปัญหาต่าง ๆ ระหว่างการดำเนินงานได้ ที่นี่เราจะอธิบายรายละเอียดเกี่ยวกับปัญหาที่พบบ่อยและวิธีการแก้ไข การค้นพบปัญหาแต่เนิ่น ๆ และการจัดการอย่างเหมาะสมจะช่วยรักษาการทำงานของระบบให้เสถียรได้1. Slave_IO_Running ที่หยุดทำงาน
อาการ:SHOW SLAVE STATUS
คำสั่งแสดงผล, Slave_IO_Running
เป็น No
หมายถึงสเลฟไม่สามารถเชื่อมต่อกับมาสเตอร์ได้ สาเหตุและการแก้ไข:- ปัญหาเครือข่าย:หากการเชื่อมต่อเครือข่ายมีปัญหา สเลฟจะไม่สามารถเข้าถึงมาสเตอร์ได้ ตรวจสอบการตั้งค่าไฟร์วอลล์และยืนยันว่าสามารถเข้าถึงมาสเตอร์ได้。
- การตั้งค่าชื่อโฮสต์หรือ IP ของมาสเตอร์ผิดพลาด:กรุณาตรวจสอบว่าชื่อโฮสต์หรือ IP ที่ระบุใน
CHANGE MASTER TO
ถูกต้องหรือไม่。 - ปัญหาสิทธิ์ผู้ใช้:หากผู้ใช้ replication ที่ตั้งค่าบนมาสเตอร์ไม่มีสิทธิ์เพียงพอ การเชื่อมต่อจะล้มเหลว ตรวจสอบว่ามีการให้สิทธิ์ที่ถูกต้องด้วย
GRANT REPLICATION SLAVE
2. ข้อมูลไม่สอดคล้องของสเลฟ
อาการ:เมื่อข้อมูลระหว่างสเลฟและมาสเตอร์ไม่ตรงกัน ข้อมูลของสเลฟอาจอยู่ในสภาวะไม่สอดคล้อง สาเหตุและการแก้ไข:- การแก้ไขข้อมูลด้วยตนเอง:หากเกิดความไม่สอดคล้อง ให้หยุดสเลฟและแก้ไขธุรกรรมที่มีปัญหาโดยมือ หลังจากแก้ไขแล้วเริ่มสเลฟใหม่เพื่อคืนการทำงานของ replication ให้เป็นปกติ
STOP SLAVE; # แก้ไขข้อมูลตามต้องการ START SLAVE;
- การซิงโครไนซ์ข้อมูลใหม่:หากเกิดความไม่สอดคล้องในระดับใหญ่ ให้ทำการสำรองข้อมูลเต็มจากมาสเตอร์แล้วซิงโครไนซ์ใหม่กับสเลฟเพื่อแก้ไข
3. ความล่าช้าของการทำซ้ำ
อาการ:เมื่อผลลัพธ์ของSHOW SLAVE STATUS
แสดงค่า Seconds_Behind_Master
ไม่เป็น 0 หมายถึงสเลฟล่าช้ากว่ามาสเตอร์ โดยทั่วไปค่านี้ยิ่งน้อยยิ่งดี สาเหตุและการแก้ไข:- ประสิทธิภาพฮาร์ดแวร์ของสเลฟ:หากสเปคของเซิร์ฟเวอร์สเลฟประมวลผลอาจไม่ทันทำให้เกิดความล่าช้า การอัปเกรดฮาร์ดแวร์เป็นวิธีที่ได้ผล
- การปรับแต่งคิวรี:หากคิวรีที่ส่งจากมาสเตอร์ใช้เวลานานในการดำเนินการบนสเลฟ จะทำให้เกิดความล่าช้า การเพิ่มดัชนีและปรับแต่งคิวรีจะช่วยลดเวลาในการประมวลผล
4. ข้อผิดพลาดสิทธิ์ของผู้ใช้ replication
อาการ:หากLast_Error
แสดงข้อความข้อผิดพลาดเกี่ยวกับสิทธิ์ แสดงว่าสตรีบอาจไม่มีสิทธิ์ที่จำเป็นในการเชื่อมต่อกับมาสเตอร์ สาเหตุและการแก้ไข:- การให้สิทธิ์ใหม่โดยการตั้งค่าใหม่:ตรวจสอบว่ามีผู้ใช้ที่มีสิทธิ์เหมาะสมบนมาสเตอร์หรือไม่ และหากจำเป็นให้ทำการตั้งค่าใหม่
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'IPของสเลฟ'; FLUSH PRIVILEGES;
5. การขยายใหญ่ของบันทึกไบนารี
อาการ:Binary Log ของมาสเตอร์อาจขยายใหญ่จนทำให้พื้นที่ดิสก์ของเซิร์ฟเวอร์อัดแน่น สาเหตุและการแก้ไข:- การหมุนเวียน Binary Log:การลบหรือเก็บถาวร Binary Log อย่างสม่ำเสมอจะช่วยป้องกันการขยายใหญ่ การตั้งค่า
expire_logs_days
จะทำให้ลบล็อกที่เกินระยะเวลาที่กำหนดโดยอัตโนมัติSET GLOBAL expire_logs_days = 7; # ลบล็อกที่เกิน 7 วัน

7. สรุป
MySQL Replication เป็นฟีเจอร์สำคัญที่ช่วยเพิ่มความสอดคล้องของข้อมูลและความน่าเชื่อถือของระบบ ในบทความนี้ เราได้อธิบายอย่างละเอียดตั้งแต่แนวคิดพื้นฐานของ MySQL Replication ขั้นตอนการตั้งค่า การเฝ้าติดตามและการแก้ไขปัญหาในการจัดการการดำเนินงาน สุดท้าย เราจะสรุปประเด็นสำคัญในการจัดการการดำเนินงานของ Replication ด้านล่างนี้การทบทวนประเด็นสำคัญ
- ประเภทและการเลือก Replication
- การทำ Replication แบบอะซิงโครนัสมีความเร็วในการตอบสนองสูงและเหมาะสำหรับการกระจายภาระงาน แต่หากต้องการความน่าเชื่อถือ ควรใช้ Replication แบบกึ่งซิงโครนัส เลือกวิธีที่เหมาะสมตามความต้องการของระบบ
- การใช้ประโยชน์จาก GTID
- ด้วยการใช้ GTID คุณไม่จำเป็นต้องระบุตำแหน่งของบันทึกไบนารี ทำให้การจัดการธุรกรรมเป็นไปอย่างราบรื่น โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมที่มีสลาวหลายตัวหรือระบบที่ต้องการการกู้คืนจากความล้มเหลว
- การตรวจสอบสถานะเป็นประจำ
SHOW MASTER STATUS
และSHOW SLAVE STATUS
เพื่อตรวจสอบสถานะการทำงานของมาสเตอร์และสลาวเป็นประจำเป็นสิ่งสำคัญ หากพบความผิดปกติ การตอบสนองอย่างรวดเร็วจะช่วยลดความเสี่ยงของข้อมูลไม่สอดคล้องและความล่าช้าให้เหลือน้อยที่สุด
- การเรียนรู้การแก้ไขปัญหาทั่วไป
- การเชื่อมต่อสลาวผิดพลาด, ข้อมูลไม่สอดคล้อง, ความล่าช้า ฯลฯ เป็นปัญหาที่มักเกิดขึ้นกับ MySQL Replication การเข้าใจวิธีแก้ไขพื้นฐานสำหรับแต่ละปัญหาจะทำให้การจัดการปัญหาในระหว่างการดำเนินงานเป็นไปอย่างราบรื่น
- การจัดการบันทึกไบนารี
- เมื่อบันทึกไบนารีมีขนาดใหญ่เกินไป จะทำให้พื้นที่ดิสก์ของเซิร์ฟเวอร์อัดแน่น ดังนั้นจึงแนะนำให้ใช้การตั้งค่า
expire_logs_days
เพื่อกำหนดการลบอัตโนมัติและทำการบำรุงรักษาเป็นประจำ