ฉันควรใช้ mysqldump หรือ mysqlhotcopy สำหรับการสำรองฐานข้อมูล MySQL หรือไม่


14

ฉันมีบล็อก WordPress ที่ทำงานบนฐานข้อมูล MySQL ที่ฉันต้องการสำรองข้อมูลเป็นประจำ จะดีกว่าไหมถ้าใช้โปรแกรม mysqldump หรือสคริปต์ mysqlhotcopy เพื่อสำรองข้อมูล? ข้อดีและข้อเสียของแต่ละข้อคืออะไร? มีตัวเลือกอื่น ๆ ที่ฉันควรพิจารณาหรือไม่

คำตอบ:


5

ฉันสามารถบอกคุณได้ว่าขณะนี้ฉันใช้ mysqldump เพื่อรักษาสำเนาสำรองของฐานข้อมูลของฉัน ฉันทำเช่นนี้เพราะเป้าหมายของฉันคือการสำรองข้อมูลทุกสัปดาห์เพื่อให้ในกรณีที่มีคนลบหน้าเว็บของพวกเขาฉันสามารถกู้คืนได้มากที่สุดในสัปดาห์ที่ผ่านมา

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

mysqldump --databases databaseName > /file/path

นี่--databasesคือสิ่งที่ทำให้ mysqldump ถ่ายโอนข้อมูลCREATE DATABASE IF NOT EXISTส่วนหัวเพื่อให้ฉันสามารถนำเข้าได้ทุกที่ที่ฉันต้องการ

ในขณะที่วิธีนี้ใช้งานได้สำหรับฉันฉันแน่ใจว่ามีวิธีที่ดีกว่าสำหรับวัตถุประสงค์อื่น ฉันยังสามารถพูดได้ว่าสำหรับโซลูชันสำรองข้อมูลใด ๆ คุณควรจัดเก็บไว้ในคอมพิวเตอร์เครื่องอื่นเป็นอย่างน้อยและควรอยู่นอกสถานที่ (โดยเฉพาะในระบบคลาวด์) ถ้าคุณทำได้


5

ฉันจะพิจารณาการใช้ปลั๊กอิน WordPressเรียกว่า "WordPress สำรองฐานข้อมูล (WP-DB-สำรองข้อมูล)" ซึ่งนอกจากนี้ยังมีการระบุไว้ในการสำรองฐานข้อมูล Wordpress คู่มือ ปลั๊กอินนี้สามารถสำรองฐานข้อมูลตามกำหนดเวลาและส่งอีเมลถึงคุณ (สมมติว่าเป็นฐานข้อมูลขนาดเล็ก) คุณสามารถสำรองข้อมูลในเครื่องได้ คุณสามารถยกเว้นความคิดเห็นสแปมและการแก้ไขเพื่อทำให้ DB มีขนาดเล็กลง

ควบคุมน้อยลง แต่ง่ายต่อการนำไปใช้

ทิ้ง MySQL ให้คุณควบคุมมากที่สุด บริการโฮสติ้งของคุณอาจเป็นปัจจัย จำกัด โฮสต์บางแห่งไม่อนุญาตให้คุณเข้าถึงงาน cron หรือเรียกใช้คำสั่ง mysqldump


4

คำแนะนำ # 1

หากคุณทำการสำรองข้อมูลใด ๆ ของอินสแตนซ์ MySQL จะเป็นการดีที่สุดที่จะติดตั้ง MySQL Replicaton เพื่อให้การกำหนดเซิร์ฟเวอร์โหลดหรือเพิ่มดิสก์ I / O จะไม่ส่งผลกระทบต่อฐานข้อมูลการผลิตของคุณ แต่อย่างใด

เมื่อคุณตั้งค่าการจำลองแบบ MySQL คุณสามารถสคริปต์mysqldumpในรูปแบบที่แตกต่างกัน ( โปรดดูโพสต์ของฉันใน DBA StackExchange สำหรับความหลากหลายของเทคนิค ) ตราบใดที่คุณเรียกใช้ mysqldumps บน Slave

คำแนะนำ # 2

หากคุณไม่สามารถตั้งค่าเซิร์ฟเวอร์อื่นสำหรับการจำลองแบบ MySQL และข้อมูลทั้งหมดของคุณคือ InnoDB คุณจะต้องทำการ mysqldump ณ เวลานั้น ใช้--single-transactionตัวเลือกกับ mysqldump ดังนั้นหากคุณเรียกใช้ mysqldump เริ่มตั้งแต่เที่ยงคืนและการสำรองข้อมูลสิ้นสุดลงที่ 12:15 น. ผลลัพธ์ของ mysqldump เมื่อคืนค่าจะสะท้อนข้อมูล ณ เวลา 12:00 น.

คำแนะนำ # 3

อีกโปรแกรมที่ใช้ได้สำหรับ MySQL Backups คือ XtraBackup จาก Percona

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

มันทำงานด้านหลังของอินสแตนซ์ MySQL แต่มีความแตกต่างที่ชัดเจน เวลาในการสำรองข้อมูลจะขึ้นอยู่กับว่าการสำรองข้อมูลเสร็จสมบูรณ์แทนที่จะเริ่มเมื่อใด ดังนั้นหากคุณรัน XtraBackup เริ่มตั้งแต่เที่ยงคืนและการสำรองข้อมูลสิ้นสุดลงเวลา 12:15 น. ผลลัพธ์ของ mysqldump เมื่อคืนค่าจะสะท้อนข้อมูล ณ เวลา 12:15 น.


2

ขึ้นอยู่กับเครื่องมือจัดเก็บข้อมูลของคุณสำหรับตารางของคุณ ใช้งานได้กับตาราง ARCHIVE และ MyISAM เท่านั้นหน้า MySQL คู่มือนี้และต้องทำงานบนเครื่องเดียวกัน (เช่นไม่ได้ใช้ซ็อกเก็ตท้องถิ่นหรือ TCP / IP)

MySQL ยังกล่าวอีกว่า

หากคุณทำการสำรองข้อมูลบนเซิร์ฟเวอร์และตารางของคุณทั้งหมดเป็นตาราง MyISAM ให้พิจารณาใช้ mysqlhotcopy แทนเนื่องจากสามารถสำรองข้อมูลได้เร็วขึ้นและเรียกคืนได้เร็วขึ้น


1

ฉันขอแนะนำให้ใช้หนึ่งในสคริปต์สำรอง mySQL จำนวนมากที่มีอยู่แล้วเพื่อลดความเจ็บปวดจากการทำให้ถูกต้อง

ฉันใช้ "automysqlbackup" ซึ่งเป็นเชลล์สคริปต์โอเพ่นซอร์สที่สามารถตั้งค่าเป็นงาน cron บนเซิร์ฟเวอร์ มันครอบคลุมเกือบทุกสถานการณ์การสำรองข้อมูลเท่าที่จะนึกออก: http://sourceforge.net/projects/automysqlbackup/ มันทำงานได้อย่างไม่มีที่ติสำหรับฉันเป็นเวลาหลายปี - แนะนำอย่างละเอียด


1

mysqlhotcopy เป็นสคริปต์ Perl ประมาณ '05 ดังนั้นมันจึงเพิ่มการพึ่งพาสำหรับ Perl และ Perl ต่างๆ ฉันจะผ่านสิ่งนี้

mysqldump เป็นโปรแกรม C ที่ถูกแจกจ่ายกับ MySQL และทำการบำรุงรักษาอย่างแข็งขัน หากคุณเพิ่มตัวเลือก -x มันจะล็อคตารางเพื่อให้คุณมีสีทอง

ฉันมีสคริปต์นี้เป็นส่วนตัวใน cron (คุณจะต้องลบ `escapes เหล่านั้นหากคุณต้องการเรียกใช้ด้วยมือ) และมันทำงานได้อย่างมีเสน่ห์สำหรับฉันสำรองข้อมูลแต่ละฐานข้อมูลของฉันไปยังไฟล์ในเครื่องรวมถึง ดัมพ์แบบเต็มของฐานข้อมูลทั้งหมด

และถ้าคุณมีฐานข้อมูลมากกว่าหนึ่งฐานที่นั่นคุณจะต้องถ่ายโอนทุนให้พวกเขาด้วย Maatkitจะช่วยคุณที่นั่นและคุณจะmk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sqlสำรองตารางการสำรองไว้และพร้อมที่จะนำเข้าอีกครั้ง


0

ฉันยังรู้ว่ามีเครื่องมือการจัดการเซิร์ฟเวอร์จำนวนหนึ่งเช่น Interworx และ Ensim ใช้ mysqldump เพื่อสำรองฐานข้อมูลแล้วใช้คำสั่ง mysql เพื่อกู้คืน จากนี้ฉันจะเดาว่านี่เป็นหนึ่งในวิธีที่ดีที่สุด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.