วันเสาร์ที่ 12 พฤษภาคม พ.ศ. 2561

ไม่เคยรีสตาร์ทเครื่องเลยนั้น หากต้องการโคลนไปยังเครื่องเซิร์ฟเวอร์ใหม่จะต้องทำยังไง ?


มาตามกันอย่างต่อเนื่องสำหรับเวบไซต์ s-techthai.com ช่วงนี้มีบทความออกมาถี่ ๆ เพราะอยู่ในช่วงของการปรับเปลี่ยนเวบไซต์ใหม่ สำรองข้อมูลเซิร์ฟเวอร์เป็นประจำทุก ๆ 3 เดือน เนื้อหาในวันนี้ยังไม่พ้นการดูแลเซิร์ฟเวอร์ให้ทำงานได้อย่างเต็มประสิทธิภาพอยู่เหมือนเดิม ล่าสุดเพิ่งจะชัตดาวน์เครื่องเซิร์ฟเวอร์ที่ออนไลน์มากว่า 563 วันหรือปีกว่า ๆ เพื่อเปลี่ยนฮาร์ดดิสก์ชุดใหม่เข้าไป เสียดายสถิติเหมือนกันแต่ทำอย่างไรได้ ถือโอกาสอัพเกรดซอฟต์แวร์ไปในตัว ระบบโอเอสยังเป็น Ubuntu 16.04.4 LTS เหมือนเดิม ยิ่งมาเจอเทคนิคในวันนี้จะหลงรักระบบโอเอสลินุกส์ไปในตัวรับรอง

ตามที่ได้เกริ่นนำไปก่อนหน้านี้แล้ว โอเอสที่ทำงานได้ดีมากและเปิดให้บริการได้ต่อเนื่องมาตลอดปีกว่า ๆ ไม่เคยรีสตาร์ทเครื่องเลยนั้น หากต้องการโคลนไปยังเครื่องเซิร์ฟเวอร์ใหม่จะต้องทำยังไง ? คำถามน่าสนใจมาก  บางคนบอกไม่เห็นยากก็ถอดฮาร์ดดิสก์ไปใช้โปรแกรมโคลนสิพี่ แต่ฮาร์ดดิสก์เราติดตั้งระบบ Raid ไว้ถอดออกข้อมูลก็หายหมด จะทำง่าย ๆแบบนั้นได้อย่างไร เชื่อหรือไม่ว่าในระบบโอเอสของ Ubuntu เองทำได้ง่าย ๆ เพียงแค่ 3 คำสั่งเอง ลองไปดูกันเลย


ขั้นตอนที่ 1 ให้ทำการคัดลอกข้อมูลซอฟต์แวร์ที่ได้ติดตั้งไว้แล้ว ณ เครื่องต้นฉบับก่อน


dpkg --get-selections > installed-software

ขั้นตอนที่ 2 นำข้อมูลซอฟต์แวร์จากขั้นตอนที่ 1 ป้อนเข้าให้โปรแกรม dpkg


dpkg --set-selections < installed-software

ขั้นตอนที่ 3 รันโปรแกรม dselect เป็นอันจบขั้นตอน


dselect 

จะเห็นว่าขั้นตอนต่าง ๆ เหล่านี้ลดความยุ่งยากในการถอดฮาร์ดดิกส์ออกมาโคลนข้างนอก แถมยังนำไปประยุกต์ใช้กับเครื่องเซิร์ฟเวอร์รุ่นไหนก็ได้ สถาปัตยกรรมแบบไหนก็ได้เรียกว่าหายห่วง เนื้อหานี้พอได้มาก็กระวนกระวายที่จะจดบันทึกเอาไว้เลยทีเดียว กลัวหายกันลืมทำวันนี้ บริการ gps ติดตามรถ ของจีพีเอสไทย เปิดให้บริการแล้วที่อำเภอเมือง จังหวัดนครราชสีมา หากสนใจข้อมูลเพิ่มเติมกดไปตามลิงค์ข้างต้นได้เลย

วันอังคารที่ 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 ของผู้เขียนเปิดใหม่ด้วย กำลังสนุกสนานกับการปรับแต่งให้เหมาะสมกับการใช้งาน ฝากประชาสัมพันธ์มาณ โอกาสนี้ด้วย