ฉันสามารถแนะนำการเปลี่ยนแปลงการตั้งค่า InnoDB ได้ง่ายซึ่งอาจเป็นภาระหนักเพียงเล็กน้อยเพื่อให้ mysqldump ทำงานได้ คุณอาจไม่ชอบสิ่งที่ฉันแนะนำเกี่ยวกับ แต่ฉันเชื่อว่ามันเป็นตัวเลือกที่ดีที่สุดของคุณ (เท่านั้น) นี่มันไป:
คำแนะนำ # 1: ปิดใช้งานส่วนแทรกเพิ่มเติม
การตั้งค่าเริ่มต้นสำหรับ mysqldump จะรวมกันเป็นร้อยหรือพันแถวด้วยกันใน INSERT เดียว สิ่งนี้เรียกว่า INSERT แบบขยาย มันเป็นเรื่องที่ก่อให้เกิดการใช้จ่ายเกินกว่าเพียงแค่บาง max_allowed_packet
ฉันตอบกลับโพสต์ในSep 01, 2011
( เซิร์ฟเวอร์ MySQL ได้หายไปขัดขวางการนำเข้าทิ้งขนาดใหญ่ ) ที่ฉันพูดคุยทำสิ่งเดียวกันสำหรับการนำเข้า mysqldump ขนาดใหญ่ ฉันเชื่อว่าการปิดใช้งาน INSERT แบบขยายจะช่วยในการสร้าง mysqldump ที่ยุ่งยากเช่นกัน
mysqldump -u root --skip-extended-insert -p maia > maia.sql
ข่าวร้าย: สิ่งนี้จะสร้างคำสั่ง INSERT สำหรับแต่ละแถว สิ่งนี้จะเพิ่มเวลาที่ใช้ในการแสดง mysqldump อย่างแน่นอน ดังนั้นมันจะเพิ่มขึ้นตามเวลาที่ใช้ในการโหลดซ้ำ (อาจมีค่าเท่ากับ 10-100
ฉันได้พูดคุยskip-extended-insert
ก่อน
คำแนะนำ # 2: การถ่ายโอนข้อมูลไบนารีเป็นเลขฐานสิบหก (ตัวเลือก)
เพื่อให้ข้อมูลไบนารีของ mysqldump เป็นแบบพกพาได้มากกว่าไบต์ให้ถ่ายโอนข้อมูลดังกล่าวเป็นฐานสิบหก
mysqldump -u root --skip-extended-insert --hex-blob -p maia > maia.sql
ข่าวร้าย: มันจะขยาย mysqldump อีกเล็กน้อย
ให้มันลอง !!!
หมายเหตุด้านข้าง: ขนาดสูงสุดของ max_allowed_packet คือ 1G