สำรองข้อมูล MySQL mysqldump: Got error: 1016: Can’t open file: … (errno: 24) when using LOCK TABLES

เรื่องมันเกิดจากได้ตั้งให้ Server สำรองข้อมูล MySQL ไว้อัตโนมัติโดยใช้คำสั่งพื้นๆ อย่าง mysqldump เช่น
mysqldump -u root -p password db-name > db-name.sql

และก็ปล่อยให้มันทำงานไปเรื่อยๆ โดยที่ไม่ได้ตรวจสอบเลยว่าการสำรองนั้นมันสมบูรณ์หรือเปล่า และวันดีคืนดีอยากจะดึงข้อมูลกลับมาปรากฎว่าไม่สามารถดึงข้อมูลกลับมาได้สมบูรณ์ บาง tables หายไป…. เท่านั้นหละ โอ้งานเข้า!!!

พอตรวจสอบไปมาปรากฎว่าไอ้คำสั่งที่เราตั้ง cron ให้ทำงานนั้นมันมี error
 mysqldump: Got error: 1016: Can’t open file: ‘./table.frm’ (errno: 24) when using LOCK TABLES

จาก error ข้างต้นปัญหาเกิดจากเรามี table ในฐานข้อมูลเยอะไป
มีทางเลือกสำหรับแก้ไขปัญหานี้ได้ 2 ทาง คือ
1. ไปที่ my.cnf แล้วเพิ่มบรรทัดนี้เข้าไป และทำการ restart mysqld ของเราใหม่
open-files-limit=20000

2. เพิ่ม option  –lock-tables=false เข้าไปใน mysqldump ดังนี้
mysqldump –lock-tables=false -u root -p password db-name > db-name.sql

เท่านี้ก็แก้ปัญหาได้แล้ว  แต่ทั้งนี้ทั้งนั้นเราควรตรวจสอบข้อมูลที่เราสำรองอยู่เสมอว่ามันสามารถนำกลับมาใช้งานได้จริง ไม่ใช่รอให้เกิดปัญหาแล้วค่อยมาดู ถ้าโชคดีก็ดีไป แต่ถ้าเคราะห์ร้ายละก็ ตัวใครตัวมันเด้อ!

อ้างอิงจาก:
http://voidweb.com/2011/05/mysqldump-got-error-1016-cant-open-file-errno-24-when-using-lock-tables/

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *