ในฐานะหนึ่งในฐานข้อมูลชั้นนำที่ให้บริการฟรี MySQL เป็นตัวเลือกยอดนิยมสำหรับเว็บแอปพลิเคชันมากมาย การเข้าถึงอินเทอร์เน็ต ทำให้แอปของคุณถูกโจมตีที่มุ่งร้าย หากเซิร์ฟเวอร์ของคุณถูกบุกรุก อย่างดีที่สุด คุณต้องติดตั้งแอปพลิเคชันใหม่ อย่างแย่ที่สุด คุณอาจสูญเสียข้อมูลของคุณ นอกจากนี้ คุณอาจอยู่ในสถานการณ์ที่คุณต้องย้ายฐานข้อมูลจากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่ง
mysqldump ใช้สำหรับอะไร
เครื่องมือ mysqldump ครอบคลุมทั้งสถานการณ์การบุกรุกของเซิร์ฟเวอร์และการย้ายข้อมูล ฟังก์ชันพื้นฐานของมันคือการนำฐานข้อมูล MySQL และดัมพ์ออกเป็นไฟล์ข้อความ แต่ไม่ใช่ไฟล์ข้อความใดๆ ไฟล์นี้เป็นชุดคำสั่ง SQLคำสั่งเหล่านี้ เมื่อดำเนินการแล้ว ให้สร้างฐานข้อมูลขึ้นใหม่ให้มีสถานะที่แม่นยำเมื่อดำเนินการดัมพ์
ใช้ mysqldump เพื่อสร้างการส่งออกฐานข้อมูลเป็นข้อมูลสำรอง หรือเมื่อย้ายฐานข้อมูลไปยังโฮสต์ใหม่ ไม่ว่าในกรณีใด ไฟล์ข้อความจะถูกนำเข้ากลับไปยังเซิร์ฟเวอร์ฐานข้อมูล MySQL มันจะดำเนินการคำสั่ง SQL ทั้งหมดในไฟล์ ซึ่งสร้างฐานข้อมูลใหม่เป็นสถานะเดิม ส่วนนี้ไม่ได้ใช้คำสั่ง mysqldump แต่จะเป็นไปไม่ได้หากไม่มียูทิลิตี้นี้เช่นกัน
เอกสาร MySQL แสดงวิธีอื่นๆ ในการสำรองข้อมูล แต่มีข้อเสีย:
- Hotcopy ฐานข้อมูลจาก MySQL Enterprise เป็นวิธีที่ยอดเยี่ยมในการสำรองข้อมูลเหล่านี้ - หากคุณไม่สนใจป้ายราคา Enterprise
- การคัดลอกไดเรกทอรีข้อมูลฐานข้อมูลอาจทำได้ยากเมื่อย้ายข้ามระบบปฏิบัติการ เนื่องจากปลายทางจะแตกต่างกัน
- การส่งออกไปยังไฟล์ข้อความที่มีตัวคั่นจะทำให้คุณมีเนื้อหา แต่คุณจะต้องสร้างโครงสร้างใหม่
- คุณมักจะสำรองข้อมูลฐานข้อมูลจากโปรแกรม GUI เช่น MySQL Workbench แต่นี่เป็นกระบวนการที่ต้องทำด้วยตนเอง ไม่ใช่สิ่งที่คุณเขียนสคริปต์หรือรวมไว้ในชุดงาน
ติดตั้งเครื่องมือ mysqldump
สำหรับ Windows ให้ตรวจสอบคำแนะนำในการติดตั้ง MySQL บน Windows 7 (ขั้นตอนการติดตั้งจะเหมือนกันสำหรับ Windows 10) บน macOS ดูคำแนะนำในการติดตั้ง MySQL บน macOS 10.7 (เก่ากว่าแต่ยังใช้งานได้) ผู้ใช้ระบบ Linux บน Ubuntu สามารถใช้คำสั่งต่อไปนี้เพื่อติดตั้งไคลเอนต์ MySQL และยูทิลิตี้:
sudo apt ติดตั้ง mysql-client
แตกไฟล์ MySQL
เมื่อติดตั้งแล้ว ให้ใช้ mysqldump เพื่อสำรองข้อมูลทั้งหมดของฐานข้อมูล
mysqldump -h [ชื่อโฮสต์ DB หรือ IP] -u [ชื่อผู้ใช้ DB] -p [ชื่อฐานข้อมูล] > db_backup.sql
นี่คือคำอธิบายของแฟล็กที่ใช้ในคำสั่งนี้:
- - h: แฟล็กนี้เป็นโฮสต์ฐานข้อมูล อาจเป็นชื่อโฮสต์แบบเต็ม (เช่น myhost.domain.com) หรือที่อยู่ IP เว้นว่างไว้หากคุณเรียกใช้คำสั่งบนโฮสต์เดียวกันกับเซิร์ฟเวอร์ MySQL
- -u : ชื่อผู้ใช้ของคุณ
- -p : หากคุณติดตั้ง MySQL อย่างปลอดภัย คุณจะต้องใช้รหัสผ่านเพื่อเชื่อมต่อ แฟล็กนี้ไม่มีอาร์กิวเมนต์พร้อมท์ให้คุณใส่รหัสผ่านเมื่อคุณรันคำสั่ง บางครั้งการใส่รหัสผ่านโดยตรงเป็นอาร์กิวเมนต์ของแฟล็กนี้มีประโยชน์ในบางครั้ง เช่น ในสคริปต์สำรอง แต่เมื่อมีข้อความแจ้ง คุณไม่ควรทำเช่นนั้น เพราะถ้ามีคนเข้าถึงคอมพิวเตอร์ของคุณ พวกเขาอาจได้รับรหัสผ่านนี้ในประวัติคำสั่ง
- > db_backup.sql: ส่วนนี้บอกให้ mysqldump กำหนดเอาต์พุตไปยังไฟล์ โดยปกติ คำสั่งจะแสดงผลทุกอย่างไปยังคอนโซล ซึ่งหมายความว่าคุณจะเห็นคำสั่ง SQL หลายคำสั่งบนหน้าจอ สัญลักษณ์ > จะส่งเอาต์พุตไปยังไฟล์ข้อความที่มีชื่อ หากไม่มีไฟล์นี้ ไฟล์จะถูกสร้างขึ้นโดยอัตโนมัติ
เมื่อเสร็จแล้ว คุณจะมีไฟล์. SQL นี่คือไฟล์ข้อความที่มีคำสั่ง SQL คุณสามารถเปิดในโปรแกรมแก้ไขข้อความเพื่อตรวจสอบเนื้อหา นี่คือการส่งออกจากฐานข้อมูล WordPress ที่แสดงวิธีการรวมไฟล์เหล่านี้
ไฟล์ถูกแบ่งออกเป็นส่วนๆ ส่วนแรกสร้างตารางสำหรับความคิดเห็นของ WordPress ส่วนที่สองจะสร้างเนื้อหาขึ้นใหม่ในตารางเหล่านั้น (ในตัวอย่างนี้ บันทึกความคิดเห็น) เมื่อคุณนำเข้าดัมพ์ MySQL อีกครั้ง คำสั่งจะทำงานผ่านไฟล์ รันคำสั่ง และสร้างฐานข้อมูลใหม่เหมือนเดิม
นำเข้าไฟล์ดัมพ์ MySQL
ก่อนที่คุณจะนำเข้าไฟล์ดัมพ์ คุณจะต้องมีฐานข้อมูลที่สร้างไว้แล้ว รวมถึงชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง คุณควรมีสิทธิ์ทั้งหมดสำหรับฐานข้อมูลด้วย คุณไม่จำเป็นต้องได้รับอนุญาตจาก GRANT แต่ให้ทั้งหมดง่ายกว่า
เรียนรู้เพิ่มเติมเกี่ยวกับการอนุญาตฐานข้อมูลก่อนที่คุณจะเปลี่ยน Security role ภายในฐานข้อมูลของคุณ
ในการนำเข้าข้อมูลของคุณอีกครั้ง ให้เข้าสู่ระบบเซิร์ฟเวอร์ MySQL ด้วยคำสั่ง mysql พิมพ์ use [ชื่อฐานข้อมูล] ที่พร้อมต์ และแทนที่ชื่อของฐานข้อมูล ป้อน source [ชื่อไฟล์] และแทนที่ชื่อไฟล์ดัมพ์ที่คุณถ่ายไว้ก่อนหน้านี้
เมื่อคุณทำเสร็จแล้ว รายการข้อความจะปรากฏขึ้นเพื่อแจ้งว่าคำสั่ง SQL กำลังดำเนินการอยู่ จับตาดูข้อผิดพลาด แต่ถ้าคุณมีสิทธิ์ที่ถูกต้อง คุณก็ไม่เป็นไร
เมื่อดำเนินการเสร็จสิ้น คุณจะมีฐานข้อมูลที่ซ้ำกัน ในการตรวจสอบความคล้ายคลึงกันระหว่างฐานข้อมูล ดำเนินการดัมพ์อื่น จากนั้นเปรียบเทียบเอาต์พุตทั้งสอง ใช้เครื่องมือแก้ไขข้อความหรือเครื่องมือส่วนต่างเฉพาะเพื่อเปรียบเทียบทั้งสองไฟล์
ไฟล์เหล่านี้มีความแตกต่างกัน 2 แบบ ดังที่แสดงด้วยเส้นสีแดงที่ด้านบนและด้านล่างของแถบเลื่อนด้านขวา อันดับแรกคือบรรทัดที่มีชื่อฐานข้อมูล ซึ่งแตกต่างกันเนื่องจากชื่อไฟล์ต่างกัน ที่สองคือการประทับเวลาสำหรับไฟล์ดัมพ์ สิ่งนี้แตกต่างกันเนื่องจากฐานข้อมูลที่สองถูกสร้างขึ้นใหม่หลังจากฐานข้อมูลแรก มิฉะนั้น ไฟล์จะเหมือนกันทุกประการ ซึ่งหมายความว่าฐานข้อมูลที่สร้างขึ้นก็เหมือนกัน
คำถามที่พบบ่อย
คุณแก้ไขข้อผิดพลาด mysqldump ได้อย่างไร: การเข้าถึงถูกปฏิเสธเมื่อใช้ตารางล็อค
ขอให้ผู้ดูแลระบบฐานข้อมูลของคุณให้สิทธิ์ LOCK แก่คุณ หากวิธีนี้แก้ปัญหาไม่ได้ ให้ลองเรียกใช้คำสั่ง mysqldump เดียวกันโดยเพิ่มแฟล็ก - -single-transaction เช่น [ $ mysqldump --single-transaction] [-u ผู้ใช้] [-p DBNAME] > backup.sql
คุณใช้ประโยค "ที่ไหน" กับ mysqldump ได้ไหม
ใช้ส่วนคำสั่ง WHERE เมื่อสร้างข้อมูลสำรองที่มีเฉพาะแถวที่เป็นไปตามเงื่อนไขที่กำหนดเท่านั้น ตัวอย่างเช่น หากต้องการดัมพ์ข้อมูลจากแถวที่มีคอลัมน์ id มากกว่า 100 เท่านั้น ให้ป้อน "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".