นอกเรื่อง - เทคนิคการใช้ mysqldump - How to mysqldump

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

การสำรองฐานข้อมูลอาจจะไม่ใช่เรื่องยากสำหรับบางคน สำหรับ MySQL ก็มีโปรแกรม frontend ดีๆสำหรับจัดการอยู่หลายตัวเช่น SQL Yog หรือ Mysql Front แต่บางครั้งอาจจะมีเหตุจำเป็นทำให้เราไม่สามารถใช้ tool พวกนี้ได้ การใช้งาน command line เป็นคำตอบหนึ่งที่จะช่วยให้เราทำงานสำเร็จลุล่วงไปได้ด้วยดี


พื้นฐานการใช้งาน mysqldump

หากเราต้องการจะสำรองฐานข้อมูลชื่อว่า mydatabase ก็จะใช้คำสั่ง

mysqldump -u root -p mydatabase > mydatabase.sql

เราก็จะได้ไฟล์ฐานข้อมูล mysqldatabase.sql ออกมา หรือบางครั้งเราต้องการแค่ table เดียวที่อยู่ในฐานข้อมูลของเราก็ใช้คำสั่ง

mysqldump -u root -p mydatabase mytable > mytable.sql

โดย mytable ก็คือชื่อ table ที่เราต้องการนั้นเอง หากว่า table ของเรามีจำนวนข้อมูลมากเป็นแสนๆแต่เราต้องการจำนวนแค่ 1000 แถวก็สามารถใส่ option เพิ่มได้อีกโดยใช้คำสั่ง

mysqldump -u root -p --where="true limit 1000" mydatabase mytable > mytable.sql

option --where ที่เราใช้นอกจากการใช้ limit แล้วยังสามารถใช้ในการกรองข้อมูลได้ด้วยเช่น เราต้องการข้อมูลที่ถูกสร้างขึ้นในเดือน มิถุนายน ปี 2009 ก็ใช้คำสั่ง

mysqldump -u root -p --where="date_format(created_date,'%Y%m') = '200906'"
mydatabase mytable > mytable.sql


เป็นต้น

สำหรับการนำไฟล์ dump ที่เราได้ออกมาก็เพียงแค่ใช้ตำสั่ง

mysql -u root -p mydatabase < mydatabase.sql

โดยกรณีที่เราต้องการ dump ไฟล์ที่เป็นฐานข้อมูลทั้งก้อน(ไฟล์ที่ได้จากกรณีแรกสุด) ต้องทำการสร้างฐานข้อมูลขึ้นมาก่อนทุกครั้ง

หวังว่าบทความนี้คงเป็นประโยชน์กับทุกคนนะครับ

  1. gravatar

    # by Anonymous - June 28, 2009 at 11:16 PM

    สุดยอดครับ ... เคยรู้แค่งูๆปลาๆ

    ขอบคุณที่ทำให้รู้มากขึ้น