Skip to main content

เนื้อหาภาษาไทย / Thai content

System guide Content reviewed

การ Backup และ Restore ฐานข้อมูล

บทความนี้เน้นย้ำความสำคัญของการ Backup และ Restore ฐานข้อมูลเพื่อป้องกันการสูญหายของข้อมูลอันเนื่องมาจากเหตุการณ์ไม่คาดฝันต่างๆ โดยแนะนำเครื่องมือ `mysqldump` ส...

การ Backup และ Restore ฐานข้อมูล

ข้อมูลคือหัวใจสำคัญของทุกแอปพลิเคชัน การสูญเสียข้อมูล ไม่ว่าจากความผิดพลาดของฮาร์ดแวร์, ข้อผิดพลาดของซอฟต์แวร์, หรือแม้แต่ความผิดพลาดของมนุษย์, อาจนำไปสู่ความเสียหายอย่างร้ายแรงต่อธุรกิจ ดังนั้น การสำรองข้อมูล (Backup) และการกู้คืนข้อมูล (Restore) จึงเป็นกระบวนการที่สำคัญอย่างยิ่งในการป้องกันข้อมูลสูญหาย และทำให้มั่นใจได้ว่าเราสามารถกู้คืนระบบกลับมาทำงานได้ตามปกติในกรณีที่เกิดเหตุการณ์ไม่คาดฝัน

ทำไมต้อง Backup ฐานข้อมูล?

การ Backup ฐานข้อมูลมีความสำคัญด้วยเหตุผลหลายประการ:

  • ป้องกันข้อมูลสูญหาย: เหตุการณ์ไม่คาดฝัน เช่น ฮาร์ดแวร์เสีย, ไฟฟ้าดับ, หรือภัยพิบัติทางธรรมชาติ อาจทำให้ข้อมูลเสียหายหรือสูญหายได้ การมี Backup ช่วยให้เราสามารถกู้คืนข้อมูลกลับมาได้
  • แก้ไขข้อผิดพลาด: บางครั้งการเปลี่ยนแปลงข้อมูลที่ไม่ถูกต้องอาจเกิดขึ้นได้ การมี Backup ช่วยให้เราสามารถย้อนกลับไปใช้ข้อมูลก่อนที่จะเกิดข้อผิดพลาดได้
  • การโยกย้ายข้อมูล: การ Backup และ Restore เป็นวิธีที่ง่ายและรวดเร็วในการย้ายฐานข้อมูลไปยังเซิร์ฟเวอร์ใหม่ หรือสภาพแวดล้อมอื่น ๆ
  • การทดสอบและพัฒนา: เราสามารถใช้ Backup เพื่อสร้างสำเนาของฐานข้อมูลสำหรับการทดสอบและพัฒนา โดยไม่ส่งผลกระทบต่อข้อมูลจริง

เครื่องมือและคำสั่งสำหรับการ Backup และ Restore

MySQL มีเครื่องมือและคำสั่งที่ใช้ในการ Backup และ Restore ฐานข้อมูล ซึ่งเครื่องมือที่นิยมใช้กันมากที่สุดคือ mysqldump และคำสั่ง mysql

1. mysqldump

mysqldump เป็นเครื่องมือ command-line ที่ใช้ในการสร้าง logical backup ของฐานข้อมูล MySQL โดยจะสร้างไฟล์ที่มีชุดคำสั่ง SQL ที่สามารถใช้ในการสร้างและเติมข้อมูลในฐานข้อมูลใหม่ได้

การใช้งาน mysqldump

รูปแบบคำสั่งพื้นฐานของ mysqldump คือ:

mysqldump -u [username] -p[password] [database_name] > [backup_file.sql]

คำอธิบาย:

  • -u [username]: ระบุชื่อผู้ใช้ MySQL
  • -p[password]: ระบุรหัสผ่าน MySQL (สามารถละเว้นได้ แล้วระบบจะถามรหัสผ่าน)
  • [database_name]: ระบุชื่อฐานข้อมูลที่ต้องการ Backup
  • > [backup_file.sql]: ระบุชื่อไฟล์ที่จะใช้เก็บข้อมูล Backup (โดยทั่วไปจะเป็นไฟล์ .sql)

ตัวอย่าง:

mysqldump -u root -ppassword mydatabase > mydatabase_backup.sql

คำสั่งนี้จะสร้างไฟล์ชื่อ mydatabase_backup.sql ที่มีข้อมูล Backup ของฐานข้อมูล mydatabase

ตัวเลือกเพิ่มเติมของ mysqldump

mysqldump มีตัวเลือกมากมายที่ช่วยให้เราปรับแต่งการ Backup ได้ตามต้องการ ตัวอย่างเช่น:

  • --all-databases: Backup ฐานข้อมูลทั้งหมดในเซิร์ฟเวอร์
  • --databases [db1] [db2] ...: Backup ฐานข้อมูลที่ระบุเท่านั้น
  • --tables [table1] [table2] ...: Backup ตารางที่ระบุเท่านั้น
  • --no-data: Backup เฉพาะโครงสร้างตาราง (schema) โดยไม่รวมข้อมูล
  • --routines: Backup stored procedures และ functions
  • --triggers: Backup triggers
  • --events: Backup events

ตัวอย่าง: Backup เฉพาะโครงสร้างตาราง users และ products จากฐานข้อมูล mydatabase

mysqldump -u root -ppassword --no-data --tables users products mydatabase > mydatabase_schema_backup.sql

แนวปฏิบัติที่ดี:

  • ควรใช้ --lock-tables เพื่อป้องกันการเปลี่ยนแปลงข้อมูลในระหว่างการ Backup (โดยเฉพาะใน production environment)
  • ควรบีบอัดไฟล์ Backup เพื่อประหยัดพื้นที่จัดเก็บ (เช่น ใช้ gzip หรือ bzip2)

2. mysql command

คำสั่ง mysql ใช้ในการรันคำสั่ง SQL โดยตรงกับ MySQL Server เราสามารถใช้คำสั่งนี้ในการ Restore ฐานข้อมูลจากไฟล์ Backup ที่สร้างโดย mysqldump

การใช้งาน mysql command

รูปแบบคำสั่งพื้นฐานของ mysql คือ:

mysql -u [username] -p[password] [database_name] < [backup_file.sql]

คำอธิบาย:

  • -u [username]: ระบุชื่อผู้ใช้ MySQL
  • -p[password]: ระบุรหัสผ่าน MySQL (สามารถละเว้นได้ แล้วระบบจะถามรหัสผ่าน)
  • [database_name]: ระบุชื่อฐานข้อมูลที่จะ Restore (ถ้าไม่มี ให้สร้างก่อน)
  • < [backup_file.sql]: ระบุชื่อไฟล์ Backup ที่ต้องการ Restore

ตัวอย่าง: Restore ฐานข้อมูล mydatabase จากไฟล์ mydatabase_backup.sql

mysql -u root -ppassword mydatabase < mydatabase_backup.sql

ข้อควรระวัง: หากฐานข้อมูล mydatabase มีอยู่แล้ว ข้อมูลเดิมจะถูกลบและแทนที่ด้วยข้อมูลจากไฟล์ Backup ดังนั้นควรตรวจสอบให้แน่ใจว่าคุณต้องการที่จะแทนที่ข้อมูลเดิมจริง ๆ

การสร้างฐานข้อมูลก่อน Restore

หากฐานข้อมูลที่จะ Restore ยังไม่มีอยู่ เราสามารถสร้างฐานข้อมูลได้โดยใช้คำสั่ง SQL CREATE DATABASE ผ่านทาง mysql command:

mysql -u root -ppassword -e "CREATE DATABASE IF NOT EXISTS mydatabase;"

คำอธิบาย:

  • -e "[SQL command]": รันคำสั่ง SQL ที่ระบุ
  • CREATE DATABASE IF NOT EXISTS mydatabase;: สร้างฐานข้อมูลชื่อ mydatabase หากยังไม่มีอยู่

หลังจากสร้างฐานข้อมูลแล้ว เราจึงสามารถ Restore ข้อมูลได้ตามปกติ

การป้องกันข้อมูลสูญหาย: แนวทางปฏิบัติที่ดี

นอกจากการ Backup และ Restore ฐานข้อมูลแล้ว ยังมีแนวทางปฏิบัติอื่น ๆ ที่ช่วยป้องกันข้อมูลสูญหาย:

  • กำหนดตารางเวลา Backup: กำหนดตารางเวลา Backup ที่เหมาะสมกับความถี่ในการเปลี่ยนแปลงข้อมูล (เช่น รายวัน, รายสัปดาห์, รายเดือน)
  • จัดเก็บ Backup ในที่ปลอดภัย: จัดเก็บไฟล์ Backup ในสถานที่ที่ปลอดภัยและแยกจากเซิร์ฟเวอร์หลัก (เช่น บน Cloud Storage, NAS, หรือ tape drive) เพื่อป้องกันการสูญหายของข้อมูลในกรณีที่เกิดภัยพิบัติ
  • ทดสอบการ Restore: ทดสอบการ Restore ข้อมูลเป็นประจำเพื่อให้แน่ใจว่ากระบวนการ Restore ทำงานได้อย่างถูกต้อง และสามารถกู้คืนข้อมูลได้ตามที่คาดหวัง
  • ใช้ RAID: ใช้ RAID (Redundant Array of Independent Disks) เพื่อเพิ่มความทนทานต่อความผิดพลาดของฮาร์ดดิสก์
  • ใช้ Replication: ใช้ MySQL Replication เพื่อสร้างสำเนาของฐานข้อมูลบนเซิร์ฟเวอร์อื่น ๆ ซึ่งสามารถใช้เป็น failover ในกรณีที่เซิร์ฟเวอร์หลักล้มเหลว
  • ตรวจสอบ Logs: ตรวจสอบ MySQL logs เป็นประจำเพื่อตรวจสอบข้อผิดพลาดที่อาจเกิดขึ้น และแก้ไขปัญหาได้ทันท่วงที
  • จำกัดสิทธิ์การเข้าถึง: จำกัดสิทธิ์การเข้าถึงฐานข้อมูลให้กับผู้ใช้ที่จำเป็นเท่านั้น เพื่อป้องกันการแก้ไขหรือลบข้อมูลโดยไม่ตั้งใจ

การ Backup และ Restore ฐานข้อมูลเป็นกระบวนการที่สำคัญอย่างยิ่งในการป้องกันข้อมูลสูญหาย การทำความเข้าใจเครื่องมือและคำสั่งที่เกี่ยวข้อง รวมถึงการปฏิบัติตามแนวทางปฏิบัติที่ดี จะช่วยให้เรามั่นใจได้ว่าข้อมูลของเราจะปลอดภัยและสามารถกู้คืนได้เสมอ

Office.in.th Custom Service

Want to build or adapt a system from this structure?

Office.in.th designs and develops enterprise web applications, API integrations, and public- and private-sector management systems, with long-term support.

See our software development service