นอกเรื่อง - เทคนิคการใช้ mysqldump - How to mysqldump
Posted by Tommy Chom in MySQL on Sunday, June 28, 2009
วันนี้จะมาพูดถึงเรื่องการสำรองฐานข้อมูลสักหน่อย ปกติแล้วเราจะป้องกันความผิดพลาดที่เกิดขึ้นกับเวปไซต์ของเราโดยการสำรองข้อมูลที่มีความสำคัญอย่างสม่ำเสมอ หากมีเหตุอันไม่พึงประสงค์เช่น 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 ไฟล์ที่เป็นฐานข้อมูลทั้งก้อน(ไฟล์ที่ได้จากกรณีแรกสุด) ต้องทำการสร้างฐานข้อมูลขึ้นมาก่อนทุกครั้ง
หวังว่าบทความนี้คงเป็นประโยชน์กับทุกคนนะครับ
This entry was posted on Sunday, June 28, 2009 at 10:11 PM and is filed under MySQL. You can follow any responses to this entry through the RSS 2.0. You can leave a response.
# by Anonymous - June 28, 2009 at 11:16 PM
สุดยอดครับ ... เคยรู้แค่งูๆปลาๆ
ขอบคุณที่ทำให้รู้มากขึ้น