วันอังคารที่ 8 พฤษภาคม พ.ศ. 2561

เกิดอะไรขึ้นเมื่อ MySql ibdata1 มีขนาดใหญ่มากเกินไป( too big)


ฮาร์ดดิสก์เต็ม เซิร์ฟเวอร์ไม่ทำงานเมื่อโปรแกรมฐานข้อมูล MySql เมื่อไฟล์ ibdata1 มีขนาดใหญ่มากเกินไป ข้อมูลในโปรแกรมฐานข้อมูลจะถูกจัดเก็บเป็นไฟล์ขนาดใหญ่มากถึง 100GBytes ส่งผลทำให้เซิร์ฟเวอร์ไม่สามารถทำงานได้ การที่จะจัดการไฟล์ ibdata1 ได้นั้นมีอยู่วิธีเดียวต้องลบข้อมูลออก แต่กลายเป็นว่าทำให้ข้อมูลต้องเสียหายไปด้วย วันนี้จะมาพูดถึงวิธีแก้ไขไฟล์ ibdata1 ที่มีขนาดใหญ่มากเกินไป โดยให้แบ่งเป็นไฟล์ตารางฐานข้อมูลขนาดเล็ก ๆ หลาย ๆ ไฟล์ประกอบกันเแทน มันจะทำให้สามารถแก้ไขหรือวิเคราะห์ว่าทำไมตารางนี้ถึงมีขนาดใหญ่กว่าตารางอื่น ๆ นั่นเอง

ขั้นตอนที่ 1 ให้ทำการสำรองข้อมูลโดยใช้โปรแกรม mysqldump ก่อนคำสั่งที่ใช้ก็คือ

mysqldump -u user -p databasename > databasename.sql

ขั้นตอนที่ 2 เมื่อดำเนินการในขั้นตอนแรกเรียบร้อยแล้ว ให้ลบฐานข้อมูลออก(drop databasename)

ขั้นตอนที่ 3 ให้ทำงานหยุดการทำงานของโปรแกรม MySql


ขั้นตอนที่ 4 ให้ลบไฟล์ ibdata1, ib_logfile0 และ ib_logfile1 ออก


ขั้นตอนที่ 5 ให้เข้าไปแก้ไขไฟล์คอนฟิกของโปรแกรม MySql โดยให้เพิ่มบรรทัดนี้เข้าไป innodb_file_per_table หรือเป็นการกำหนดให้โปรแกรม MySql สร้างไฟล์ของแต่ละตารางขึ้นมา


ขั้นตอนที่ 6 เริ่มการทำงานใหม่ของโปรแกรม MySql


ขั้นตอนที่ 7 จากนั้นสร้างฐานข้อมูลใหม่ และอิมพอร์ตข้อมูลที่สำรองไว้ในขั้นตอนที่ 1 กลับมา เป็นอันจบขั้นตอนทั้งหมด


สรุปขั้นตอนทั้งหมดต้องทำอย่างใจเย็น ๆ อย่าให้พลาดแม้แต่ในขั้นตอนใด ๆ เพราะว่าหากเป็นระบบที่มีลูกค้าใช้งานอยู่อย่างต่อเนื่องด้วยแล้ว การปิดระบบเพียงแค่ 3-5 ชั่วโมงย่อมส่งผลกระทบต่อการให้บริการของเราอย่างแน่นอน นอกจากเรื่องราวเกี่ยวกับการทำงานบนระบบเซิร์ฟเวอร์เล็ก ๆ ที่ผู้เขียนดูแลอยู่แล้วยังมีเวบไซต์ระบบ GPS TRACKER 3G ของผู้เขียนเปิดใหม่ด้วย กำลังสนุกสนานกับการปรับแต่งให้เหมาะสมกับการใช้งาน ฝากประชาสัมพันธ์มาณ โอกาสนี้ด้วย

ไม่มีความคิดเห็น:

แสดงความคิดเห็น