1. Introduction
MySQL เป็นระบบจัดการฐานข้อมูลที่ใช้โดยเว็บไซต์และแอปพลิเคชันหลายแห่ง ในเครื่องมือของมัน คำสั่ง “mysqldump” มีความสำคัญเป็นพิเศษเมื่อทำการสำรองข้อมูลหรือการย้ายฐานข้อมูล โดยเฉพาะอย่างยิ่งเมื่อคุณต้องการสำรองเฉพาะตารางบางตารางจากฐานข้อมูลขนาดใหญ่ คำสั่งนี้จะมีประโยชน์อย่างมาก
ในบทความนี้ เราจะอธิบายอย่างละเอียด วิธีการดัมพ์ตารางเฉพาะโดยใช้คำสั่ง mysqldump คู่มือนี้ออกแบบให้เข้าใจง่ายสำหรับผู้เริ่มต้น พร้อมแนะนำตัวเลือกระดับกลางและเทคนิคการใช้งานขั้นสูง
2. Basic Syntax of the mysqldump Command
ก่อนอื่น เรามาทบทวนการใช้งานพื้นฐานของคำสั่ง mysqldump กัน คำสั่งนี้ใช้เพื่อดัมพ์ (สำรอง) โครงสร้างและข้อมูลของฐานข้อมูลทั้งหมดหรือเฉพาะตาราง
Basic Syntax
โดยระบุชื่อผู้ใช้, รหัสผ่าน, ชื่อฐานข้อมูล, และชื่อตารางตามที่แสดงด้านล่าง คุณสามารถสำรองตารางเฉพาะได้
mysqldump -u username -p database_name table_name > output_file.sql
-u: ระบุชื่อผู้ใช้ที่ใช้เข้าถึงฐานข้อมูล-p: ระบุรหัสผ่าน (ระบบจะให้คุณป้อนเมื่อรันคำสั่ง)database_name: ชื่อฐานข้อมูลที่ต้องการดัมพ์table_name: ตารางเฉพาะที่ต้องการดัมพ์> output_file.sql: ระบุไฟล์ผลลัพธ์
Commonly Used Options
--single-transaction: ทำให้การสำรองตาราง InnoDB มีความสอดคล้องของธุรกรรม--skip-lock-tables: ป้องกันการล็อกตารางระหว่างการสำรอง

3. How to Dump Specific Tables
Dumping a Single Table
เพื่อสำรองเฉพาะตารางเดียว ให้ระบุชื่อตารางหลังจากชื่อฐานข้อมูล ตัวอย่างต่อไปนี้จะแสดงการดัมพ์เฉพาะตาราง users
mysqldump -u root -p my_database users > users_dump.sql
คำสั่งนี้จะบันทึกโครงสร้างและข้อมูลของตาราง users ในฐานข้อมูล my_database ไปยังไฟล์ users_dump.sql.
Dumping Multiple Tables
หากต้องการสำรองหลายตารางพร้อมกัน ให้ระบุตารางโดยคั่นด้วยช่องว่าง
mysqldump -u root -p my_database users orders products > multiple_tables_dump.sql
ในตัวอย่างข้างต้น ตารางสามตาราง users, orders และ products จะถูกดัมพ์พร้อมกัน.
Dumping Using a Table List
เมื่อดัมพ์ตารางจำนวนมาก การระบุชื่อตารางทุกตารางด้วยตนเองอาจทำให้ยุ่งยาก ในกรณีเช่นนี้คุณสามารถใช้คำสั่ง SHOW TABLES หรือสคริปต์เพื่อสร้างรายการตารางที่จะดัมพ์โดยอัตโนมัติ
mysql -u root -p my_database -N -e "SHOW TABLES LIKE 'hoge%'" > table_list.txt
mysqldump -u root -p my_database `cat table_list.txt` > partial_dump.sql
วิธีนี้ช่วยให้คุณสำรองเฉพาะตารางที่ตรงกับรูปแบบที่กำหนดได้อย่างมีประสิทธิภาพ.
4. Options and Advanced Usage
mysqldump มีตัวเลือกหลายอย่างที่ช่วยให้คุณสร้างการสำรองข้อมูลได้อย่างยืดหยุ่นตามความต้องการ ด้านล่างเป็นตัวเลือกบางส่วนสำหรับสถานการณ์เฉพาะ
Dumping Structure Only
หากคุณไม่ต้องการข้อมูลและต้องการสำรองเฉพาะโครงสร้างของตาราง ให้ใช้ตัวเลือก --no-data
mysqldump -u root -p my_database --no-data users > users_structure.sql
คำสั่งนี้จะดัมพ์เฉพาะโครงสร้างของตาราง users โดยไม่รวมข้อมูลใด ๆ
Dumping Data Only
ในทางกลับกัน หากต้องการดัมพ์เฉพาะข้อมูลของตาราง ให้ใช้ตัวเลือก --no-create-info
mysqldump -u root -p my_database --no-create-info users > users_data.sql
คำสั่งนี้จะละเว้นโครงสร้างของตารางและดัมพ์เฉพาะข้อมูล
Dumping Data Based on Specific Conditions
โดยใช้ตัวเลือก --where คุณสามารถดัมพ์เฉพาะข้อมูลที่ตรงกับเงื่อนไขที่กำหนด ตัวอย่างเช่น เพื่อดัมพ์เฉพาะแถวที่ id มากกว่า 100 ให้ใช้คำสั่งต่อไปนี้:
mysqldump -u root -p my_database users --where="id > 100" > users_filtered_dump.sql
วิธีนี้ช่วยให้คุณดึงและสำรองข้อมูลที่จำเป็นจากฐานข้อมูลขนาดใหญ่ได้เท่านั้น.

5. Practical Usage Examples
Use Case 1: การสำรองข้อมูลตารางเดียว
สำหรับกรณีที่คุณต้องการสำรองเฉพาะตาราง salary ในฐานข้อมูล employees ให้ใช้คำสั่งต่อไปนี้:
mysqldump -u root -p employees salary > salary_dump.sql
Use Case 2: การสำรองข้อมูลด้วยเงื่อนไข
เพื่อดัมพ์ข้อมูลเฉพาะช่วงที่ต้องการ ให้ใช้ตัวเลือก --where ตัวอย่างเช่น เพื่อสำรองเฉพาะแถวที่ค่า id ในตาราง users มากกว่า 100:
mysqldump -u root -p my_database users --where="id > 100" > users_partial_dump.sql
6. หมายเหตุสำคัญและแนวปฏิบัติที่ดีที่สุด
ปัญหาการล็อกตาราง
เมื่อใช้ mysqldump ตารางอาจถูกล็อก ทำให้ไม่สามารถดำเนินการอื่น ๆ ได้ ซึ่งอาจเป็นปัญหาอย่างมากในระบบการผลิต เพื่อหลีกเลี่ยงปัญหานี้ แนะนำให้ใช้ตัวเลือก --single-transaction สำหรับตาราง InnoDB ให้รวมกับตัวเลือก --skip-lock-tables เพื่อเพิ่มความปลอดภัยอีกระดับหนึ่ง
การจัดการปริมาณข้อมูลขนาดใหญ่
หากฐานข้อมูลของคุณมีข้อมูลจำนวนมาก กระบวนการดัมพ์อาจใช้เวลานาน วิธีที่มีประสิทธิภาพคือการใช้ gzip เพื่อบีบอัดข้อมูลขณะดัมพ์แบบเรียลไทม์
mysqldump -u root -p my_database | gzip > backup_$(date +%Y%m%d).sql.gz
คำสั่งนี้จะบีบอัดข้อมูลระหว่างกระบวนการดัมพ์ ช่วยประหยัดพื้นที่บนดิสก์
7. สรุป
ในบทความนี้ เราได้อธิบายวิธีดัมพ์ตารางเฉพาะโดยใช้คำสั่ง mysqldump ครอบคลุมตั้งแต่การใช้คำสั่งพื้นฐานจนถึงการดัมพ์ตามเงื่อนไข การส่งออกเฉพาะโครงสร้างหรือข้อมูลเท่านั้น และเทคนิคการสคริปต์ที่มีประสิทธิภาพ mysqldump เป็นเครื่องมือที่มีพลังมาก และเมื่อใช้อย่างถูกต้อง จะช่วยให้คุณทำการสำรองและย้ายฐานข้อมูลได้อย่างราบรื่น
ในบทความต่อไป เราจะเจาะลึกตัวเลือกขั้นสูงของ mysqldump และเปรียบเทียบกับเครื่องมือสำรองข้อมูลอื่น ๆ.


