ฉันมี MySQL (5.5) ในการตั้งค่า master-slave และสร้างเซิร์ฟเวอร์ทาสอื่น
ฉันหยุดทาสต้นฉบับทิ้งข้อมูลคัดลอกและนำเข้าอีกครั้งและทำงานได้ดี ฉันสังเกตเห็น master_log pos ของสลาฟดั้งเดิมและใช้คำสั่งเหล่านี้เพื่อตั้งค่าสลาฟใหม่
CHANGE MASTER TO MASTER_HOST='<ipaddress>',
MASTER_USER='<username>', MASTER_PASSWORD='<password>',
MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851',
MASTER_LOG_POS=15824150,
MASTER_CONNECT_RETRY=10;
เมื่อฉันเริ่มทาสใหม่ที่ฉันได้รับ
Last_IO_Error: มีข้อผิดพลาดร้ายแรง 1236 จากต้นแบบเมื่ออ่านข้อมูลจากบันทึกไบนารี: 'รายการบันทึกเหตุการณ์เกิน max_allowed_packet; เพิ่ม max_allowed_packet ในต้นแบบ '
อย่างไรก็ตามเมื่อฉันเริ่มต้นทาสดั้งเดิมมันก็ไม่เป็นไรและตอนนี้ก็กำลังซิงค์กันอยู่
ดังนั้นคำถาม:
ค่าปัจจุบันคือ 16M ฉันจะรู้ได้อย่างไรว่าใหญ่แค่ไหน (ฉันค่อนข้างจะหลีกเลี่ยงการลองผิดลองถูกกับเซิร์ฟเวอร์ที่ใช้งานจริง)
ทำไมฉันต้องเพิ่มมูลค่าให้กับนายเมื่อทาสดั้งเดิมถูกจัดการได้ดีปัญหาอาจจะเป็นกับทาสใหม่ได้หรือไม่
ปรับปรุง
ฉันเพิ่ม max_allowed_packet เป็น 1073741824 ตามที่ Rolando แนะนำไว้กับเจ้านายทาสเก่าและทาสใหม่และเริ่มต้นใหม่ ( SET GLOBAL max_allowed_packet = 1073741824;
ด้วยเหตุผลบางอย่างดูเหมือนจะไม่เกิดขึ้น)
ตอนนี้ข้อผิดพลาด IO ครั้งสุดท้ายเหมือนเดิม แต่ตอนนี้ฉันเห็นแล้ว
Last_SQL_Error: การอ่านบันทึกการทำงานล้มเหลว: ไม่สามารถแยกวิเคราะห์รายการบันทึกการถ่ายทอด สาเหตุที่เป็นไปได้คือ: บันทึกไบนารีของต้นแบบเสียหาย (คุณสามารถตรวจสอบสิ่งนี้ได้โดยการเรียกใช้ 'mysqlbinlog' บนล็อกไฟล์ไบนารี) ล็อกบันทึกการถ่ายทอดของทาสทำงานเสียหาย (คุณสามารถตรวจสอบได้โดยใช้ 'mysqlbinlog' บนล็อกรีเลย์) ปัญหาเครือข่ายหรือข้อบกพร่องในรหัส MySQL ของเจ้านายหรือทาส หากคุณต้องการตรวจสอบบันทึกไบนารีของต้นแบบหรือบันทึกการถ่ายทอดของทาสคุณจะสามารถรู้ชื่อได้โดยการออก 'SHOW SLAVE STATUS' บนสลาฟนี้
ถ้าฉันทำ mysqlbinlog ในไฟล์ของอาจารย์มันจะเลื่อนผ่านไปด้วยคำสั่งที่ค่อนข้างมีความสุขสำหรับทุกเพศทุกวัย - ไฟล์คือ 722M - ถ้าฉันทำเช่นนั้นสำหรับบันทึกการถ่ายทอดทาสฉันได้รับ
ข้อผิดพลาด: ข้อผิดพลาดใน Log_event :: read_log_event (): 'การตรวจสอบสติไม่สำเร็จ', data_len: 38916267, event_type: 69
ข้อผิดพลาด: ไม่สามารถอ่านรายการที่ offset 253: ข้อผิดพลาดในรูปแบบบันทึกหรือข้อผิดพลาดในการอ่าน
ฉันตรวจสอบตัวแปรและการเปลี่ยนแปลงยังทำงานอยู่
mysql> แสดงตัวแปร LIKE '% max_allowed_packet%';
บนทาสคนใหม่ที่แสดงให้เห็นmax_allowed_packet
และslave_max_allowed_packet
ที่เป็นหลักมันมีเพียงmax_allowed_packet
ดังนั้นฉันจึงตรวจสอบเวอร์ชันของต้นแบบ:
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 1.1.6 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.11-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
และทาสใหม่
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 5.5.32 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.32-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
รุ่นทั้งสองนี้อยู่ห่างกันมากเกินไปหรือไม่