ทำไมโปรแกรมเมอร์ต้องทำ Backup ข้อมูลฐานข้อมูล
ถ้าคุณกำลังฝึกเขียนโปรแกรม การทำ Backup (การสำรองข้อมูลเพื่อป้องกันการสูญหาย) คือทักษะเอาตัวรอดที่สำคัญที่สุด ลองนึกภาพว่าคุณกำลังสร้างแอปพลิเคชันแล้วเผลอลบตารางข้อมูลสำคัญทิ้งไป หรือฐานข้อมูลพังเพราะคำสั่งที่ผิดพลาด ถ้าไม่มีไฟล์สำรอง คุณอาจต้องนั่งร้องไห้เพราะงานที่ทำมาหลายสัปดาห์หายไปหมดในพริบตา
เปรียบเทียบง่ายๆ เหมือนการทำรายงานส่งอาจารย์ คุณคงไม่พิมพ์งานไฟล์เดียวโดยไม่กดเซฟเลยใช่ไหม การทำ Database Backup (การคัดลอกข้อมูลทั้งหมดในระบบฐานข้อมูลออกมาเก็บไว้) ก็เหมือนการกดเซฟไฟล์งานนั่นแหละ มันช่วยให้คุณอุ่นใจว่าถ้าเครื่องคอมพิวเตอร์พังหรือเผลอทำพลาด คุณยังมีจุดให้ย้อนกลับไปเริ่มต้นใหม่ได้เสมอ
มือใหม่หลายคนมักละเลยเรื่องนี้เพราะคิดว่าฐานข้อมูลในเครื่องตัวเองไม่สำคัญ แต่การฝึกทำตั้งแต่ตอนนี้จะทำให้คุณติดเป็นนิสัย Professional Programmer (นักเขียนโปรแกรมมืออาชีพ) ที่ทำงานรอบคอบ เมื่อคุณได้ทำงานจริงในบริษัท คุณจะพบว่าทุกขั้นตอนการจัดการฐานข้อมูลต้องมีกระบวนการสำรองข้อมูลเสมอเพื่อความปลอดภัยของข้อมูลลูกค้า
รู้จักกับเครื่องมือ mysqldump
เครื่องมือที่เราจะใช้กันวันนี้คือ mysqldump ซึ่งเป็นคำสั่งมาตรฐานที่มาพร้อมกับโปรแกรมฐานข้อมูลอย่าง MySQL (ระบบจัดการฐานข้อมูลยอดนิยม) หรือ MariaDB (โปรแกรมฐานข้อมูลที่มีพื้นฐานมาจาก MySQL) หน้าที่ของมันคือการอ่านข้อมูลในฐานข้อมูลของคุณออกมา แล้วเปลี่ยนเป็นชุดคำสั่งภาษา SQL เพื่อนำไปเก็บไว้ในไฟล์
การทำงานของมันเหมือนการที่คุณเขียนรายการสิ่งของในบ้านลงบนกระดาษ ถ้าบ้านพังไป คุณก็แค่หยิบกระดาษแผ่นนั้นมาอ่าน แล้วค่อยๆ สร้างบ้านขึ้นมาใหม่ตามรายการที่จดไว้ ไฟล์ที่ได้จาก mysqldump จะมีนามสกุลเป็น .sql ซึ่งเป็นไฟล์ข้อความธรรมดาที่เปิดอ่านได้ด้วยโปรแกรมจดบันทึกทั่วไป
ก่อนจะเริ่มใช้งาน คุณต้องมั่นใจว่าคอมพิวเตอร์ของคุณรู้จักคำสั่งนี้แล้ว วิธีเช็คคือเปิด Command Line (โปรแกรมหน้าจอดำสำหรับพิมพ์คำสั่งคอมพิวเตอร์) ขึ้นมา แล้วพิมพ์คำสั่งเช็คเวอร์ชัน ถ้าเครื่องตอบกลับมาเป็นตัวเลขเวอร์ชันของฐานข้อมูล แสดงว่าคุณพร้อมแล้ว แต่ถ้าขึ้นว่า Command not found (หาคำสั่งไม่เจอ) คุณต้องไปตั้งค่า Environment Variable (การตั้งค่าให้คอมพิวเตอร์รู้จักตำแหน่งของโปรแกรม) ให้เรียบร้อยก่อน
ขั้นตอนการ Export ฐานข้อมูลด้วย mysqldump
การ Export (การส่งออกข้อมูลจากฐานข้อมูลออกมาเป็นไฟล์) ทำได้ง่ายๆ ผ่าน Command Line บน Windows เพียงแค่คุณระบุชื่อผู้ใช้งาน รหัสผ่าน และชื่อฐานข้อมูลที่ต้องการสำรองลงไปในคำสั่งเดียว ระบบก็จะจัดการสร้างไฟล์ให้คุณทันที
จุดที่มือใหม่มักพลาดคือการลืมใส่รหัสผ่าน หรือพิมพ์ชื่อฐานข้อมูลผิด การทำงานกับ Command Line ต้องระมัดระวังเรื่องตัวสะกดเป็นพิเศษ เพราะคอมพิวเตอร์ไม่ได้ฉลาดพอจะเดาใจเราได้ว่าเราหมายถึงฐานข้อมูลตัวไหน หากพิมพ์ผิดแม้แต่ตัวเดียว คำสั่งก็จะไม่ทำงานและฟ้องข้อผิดพลาดทันที
ลองมาดูตัวอย่างคำสั่งสำหรับการสำรองข้อมูลฐานข้อมูลหนึ่งตัวกันครับ
mysqldump -u root -p my_database > backup.sql
อธิบายคำสั่ง:
mysqldump: คือโปรแกรมหลักที่เราเรียกใช้งาน-u root: บอกว่าเราจะเชื่อมต่อด้วยชื่อผู้ใช้ชื่อroot-p: บอกให้ระบบถามรหัสผ่านก่อนทำงานmy_database: คือชื่อฐานข้อมูลที่คุณต้องการสำรอง>: คือสัญลักษณ์ที่บอกว่าให้เอาข้อมูลที่ได้ไปเก็บไว้ในไฟล์backup.sql: คือชื่อไฟล์ปลายทางที่คุณตั้งขึ้นมาเอง
ผลลัพธ์: หลังจากกด Enter และใส่รหัสผ่าน คุณจะเห็นไฟล์ชื่อ backup.sql ปรากฏอยู่ในโฟลเดอร์ที่คุณเปิด Command Line อยู่ ซึ่งเมื่อเปิดไฟล์นี้ด้วยโปรแกรม Notepad คุณจะเห็นโค้ด SQL ยาวๆ ที่เก็บข้อมูลทั้งหมดของคุณไว้ข้างใน
ขั้นตอนการ Restore ข้อมูลกลับเข้าฐานข้อมูล
เมื่อมีไฟล์สำรองแล้ว สิ่งที่ต้องรู้อีกอย่างคือการ Restore (การนำข้อมูลที่สำรองไว้กลับคืนสู่ระบบ) เพื่อกู้คืนสถานะฐานข้อมูลเดิมกลับมา การทำขั้นตอนนี้เปรียบเสมือนการนำรายการสิ่งของที่จดไว้กลับมาสร้างบ้านใหม่ให้เหมือนเดิมทุกประการ
ก่อนที่คุณจะเริ่มกู้คืน คุณต้องสร้าง Database (ฐานข้อมูลเปล่าๆ) ขึ้นมารอไว้ก่อน เพราะคำสั่งกู้คืนจะนำข้อมูลไปใส่ในฐานข้อมูลที่มีอยู่แล้วเท่านั้น หากคุณลืมสร้างฐานข้อมูลเปล่าเอาไว้ คำสั่งกู้คืนจะทำงานไม่ได้และแจ้งเตือนว่าไม่พบฐานข้อมูลปลายทาง
คำสั่งสำหรับการกู้คืนจะใช้สัญลักษณ์เครื่องหมายน้อยกว่า < เพื่อบอกว่าให้ดึงข้อมูลจากไฟล์เข้ามาสู่ฐานข้อมูลของเรา ลองดูตัวอย่างการกู้คืนข้อมูลครับ
mysql -u root -p my_database < backup.sql
อธิบายคำสั่ง:
mysql: คือโปรแกรมหลักสำหรับจัดการฐานข้อมูล-u root -p: ทำหน้าที่เหมือนเดิมคือระบุชื่อผู้ใช้และให้ถามรหัสผ่านmy_database: ชื่อฐานข้อมูลเปล่าที่คุณสร้างเตรียมไว้<: คือสัญลักษณ์ที่บอกว่าให้ดึงข้อมูลจากไฟล์ทางขวาเข้ามาใส่ในฐานข้อมูลทางซ้ายbackup.sql: คือชื่อไฟล์ที่คุณสำรองไว้ก่อนหน้านี้
ผลลัพธ์: ถ้าทุกอย่างถูกต้อง หน้าจอจะไม่แสดงข้อความอะไรเลยหลังจากใส่รหัสผ่าน ซึ่งนั่นคือสัญญาณที่ดีว่าการกู้คืนสำเร็จแล้ว คุณสามารถเข้าไปเช็คในโปรแกรมจัดการฐานข้อมูลของคุณเพื่อดูว่าข้อมูลกลับมาครบถ้วนหรือไม่
ข้อควรระวังสำหรับมือใหม่
สิ่งหนึ่งที่ผมอยากเตือนคือเรื่องของ Permission (สิทธิ์การเข้าถึงข้อมูล) บางครั้งคุณอาจจะเจอข้อความแจ้งเตือนเรื่องสิทธิ์ไม่เพียงพอ นี่เป็นเรื่องปกติถ้าคุณไม่ได้รัน Command Line ในโหมด Administrator (โหมดผู้ดูแลระบบที่มีสิทธิ์สูงสุด) ให้ลองคลิกขวาที่โปรแกรม Command Line แล้วเลือก Run as administrator ดูครับ
อีกเรื่องที่สำคัญมากคือการจัดการไฟล์ .sql อย่าเก็บไฟล์นี้ไว้ในที่ที่คนอื่นเข้าถึงได้ง่าย เพราะในไฟล์นี้มีข้อมูลทั้งหมดของคุณ รวมไปถึงรหัสผ่านหรือข้อมูลส่วนตัวที่อยู่ในตารางฐานข้อมูล หากคุณทำโปรเจกต์ส่งอาจารย์หรือลง GitHub (เว็บไซต์เก็บโค้ดออนไลน์) อย่าลืมใส่ไฟล์นี้ไว้ในรายการ .gitignore (ไฟล์ที่บอกให้โปรแกรมไม่ต้องสนใจข้อมูลบางอย่าง) เพื่อป้องกันข้อมูลรั่วไหล
สุดท้ายคืออย่าลืมตรวจสอบขนาดไฟล์หลังการสำรอง ถ้าไฟล์มีขนาด 0 KB หรือไฟล์มีขนาดเล็กผิดปกติ ให้สันนิษฐานไว้ก่อนว่าการสำรองข้อมูลล้มเหลว ให้ลองเช็คคำสั่งอีกครั้งและอ่านข้อความแจ้งเตือนที่ปรากฏบนหน้าจอให้ละเอียด เพราะข้อความเหล่านั้นมักบอกใบ้ทางแก้ปัญหาให้คุณเสมอ
สรุป: การนำไปใช้จริงในโปรเจกต์ของคุณ
การทำ Backup และ Restore ไม่ใช่เรื่องยาก แต่เป็นเรื่องของความสม่ำเสมอ สมมติว่าคุณกำลังทำโปรเจกต์จบและต้องส่งความคืบหน้าให้เพื่อนร่วมทีมทุกวัน การสร้างไฟล์สำรองข้อมูลก่อนเลิกงานทุกวันคือวินัยที่ดีมาก คุณสามารถตั้งชื่อไฟล์ตามวันที่ เช่น db_20231027.sql เพื่อให้ง่ายต่อการเรียกใช้ในอนาคต
หากวันหนึ่งคุณต้องย้ายฐานข้อมูลจากเครื่องตัวเองไปไว้บน Cloud Server (เซิร์ฟเวอร์ที่เช่าใช้งานบนอินเทอร์เน็ต) คุณก็จะใช้วิธีการเดียวกันนี้แหละในการย้ายข้อมูล คุณแค่ทำการ Export จากเครื่องตัวเอง แล้วนำไฟล์ไป Import บนเซิร์ฟเวอร์ปลายทาง เพียงเท่านี้งานของคุณก็ย้ายไปอยู่บนระบบออนไลน์ได้อย่างปลอดภัยแล้ว
จงจำไว้ว่า การทำ Backup คือเกราะป้องกันที่ดีที่สุดของโปรแกรมเมอร์ ยิ่งคุณเริ่มฝึกทำจนคล่องตั้งแต่วันนี้เท่าไหร่ คุณจะยิ่งมีความมั่นใจในการเขียนโค้ดและจัดการระบบมากขึ้นเท่านั้น อย่ากลัวที่จะลองผิดลองถูก เพราะในโลกของการเขียนโปรแกรม การทำพลาดแล้วรู้วิธีแก้ไข คือวิธีที่ทำให้คุณเก่งขึ้นได้เร็วที่สุดครับ