ฉันมีบล็อก WordPress ที่ทำงานบนฐานข้อมูล MySQL ที่ฉันต้องการสำรองข้อมูลเป็นประจำ จะดีกว่าไหมถ้าใช้โปรแกรม mysqldump หรือสคริปต์ mysqlhotcopy เพื่อสำรองข้อมูล? ข้อดีและข้อเสียของแต่ละข้อคืออะไร? มีตัวเลือกอื่น ๆ ที่ฉันควรพิจารณาหรือไม่
ฉันมีบล็อก WordPress ที่ทำงานบนฐานข้อมูล MySQL ที่ฉันต้องการสำรองข้อมูลเป็นประจำ จะดีกว่าไหมถ้าใช้โปรแกรม mysqldump หรือสคริปต์ mysqlhotcopy เพื่อสำรองข้อมูล? ข้อดีและข้อเสียของแต่ละข้อคืออะไร? มีตัวเลือกอื่น ๆ ที่ฉันควรพิจารณาหรือไม่
คำตอบ:
ฉันสามารถบอกคุณได้ว่าขณะนี้ฉันใช้ mysqldump เพื่อรักษาสำเนาสำรองของฐานข้อมูลของฉัน ฉันทำเช่นนี้เพราะเป้าหมายของฉันคือการสำรองข้อมูลทุกสัปดาห์เพื่อให้ในกรณีที่มีคนลบหน้าเว็บของพวกเขาฉันสามารถกู้คืนได้มากที่สุดในสัปดาห์ที่ผ่านมา
สิ่งที่ดีเกี่ยวกับเรื่องนี้คือมันเป็นไฟล์ข้อความพื้นฐานดังนั้นฉันจึงสามารถนำเข้าสู่คอมพิวเตอร์เครื่องใดก็ได้ที่มี MySQL โหลดมันขึ้นมาและค้นหาข้อมูลที่หายไป หมายเหตุ: เพื่อให้ได้สิ่งที่ฉันต้องการคำสั่งที่ฉันใช้ในสคริปต์ของฉันคือ:
mysqldump --databases databaseName > /file/path
นี่--databases
คือสิ่งที่ทำให้ mysqldump ถ่ายโอนข้อมูลCREATE DATABASE IF NOT EXIST
ส่วนหัวเพื่อให้ฉันสามารถนำเข้าได้ทุกที่ที่ฉันต้องการ
ในขณะที่วิธีนี้ใช้งานได้สำหรับฉันฉันแน่ใจว่ามีวิธีที่ดีกว่าสำหรับวัตถุประสงค์อื่น ฉันยังสามารถพูดได้ว่าสำหรับโซลูชันสำรองข้อมูลใด ๆ คุณควรจัดเก็บไว้ในคอมพิวเตอร์เครื่องอื่นเป็นอย่างน้อยและควรอยู่นอกสถานที่ (โดยเฉพาะในระบบคลาวด์) ถ้าคุณทำได้
ฉันจะพิจารณาการใช้ปลั๊กอิน WordPressเรียกว่า "WordPress สำรองฐานข้อมูล (WP-DB-สำรองข้อมูล)" ซึ่งนอกจากนี้ยังมีการระบุไว้ในการสำรองฐานข้อมูล Wordpress คู่มือ ปลั๊กอินนี้สามารถสำรองฐานข้อมูลตามกำหนดเวลาและส่งอีเมลถึงคุณ (สมมติว่าเป็นฐานข้อมูลขนาดเล็ก) คุณสามารถสำรองข้อมูลในเครื่องได้ คุณสามารถยกเว้นความคิดเห็นสแปมและการแก้ไขเพื่อทำให้ DB มีขนาดเล็กลง
ควบคุมน้อยลง แต่ง่ายต่อการนำไปใช้
ทิ้ง MySQL ให้คุณควบคุมมากที่สุด บริการโฮสติ้งของคุณอาจเป็นปัจจัย จำกัด โฮสต์บางแห่งไม่อนุญาตให้คุณเข้าถึงงาน cron หรือเรียกใช้คำสั่ง mysqldump
หากคุณทำการสำรองข้อมูลใด ๆ ของอินสแตนซ์ MySQL จะเป็นการดีที่สุดที่จะติดตั้ง MySQL Replicaton เพื่อให้การกำหนดเซิร์ฟเวอร์โหลดหรือเพิ่มดิสก์ I / O จะไม่ส่งผลกระทบต่อฐานข้อมูลการผลิตของคุณ แต่อย่างใด
เมื่อคุณตั้งค่าการจำลองแบบ MySQL คุณสามารถสคริปต์mysqldumpในรูปแบบที่แตกต่างกัน ( โปรดดูโพสต์ของฉันใน DBA StackExchange สำหรับความหลากหลายของเทคนิค ) ตราบใดที่คุณเรียกใช้ mysqldumps บน Slave
หากคุณไม่สามารถตั้งค่าเซิร์ฟเวอร์อื่นสำหรับการจำลองแบบ MySQL และข้อมูลทั้งหมดของคุณคือ InnoDB คุณจะต้องทำการ mysqldump ณ เวลานั้น ใช้--single-transaction
ตัวเลือกกับ mysqldump ดังนั้นหากคุณเรียกใช้ mysqldump เริ่มตั้งแต่เที่ยงคืนและการสำรองข้อมูลสิ้นสุดลงที่ 12:15 น. ผลลัพธ์ของ mysqldump เมื่อคืนค่าจะสะท้อนข้อมูล ณ เวลา 12:00 น.
อีกโปรแกรมที่ใช้ได้สำหรับ MySQL Backups คือ XtraBackup จาก Percona
XtraBackupเป็นเครื่องมือที่ครอบคลุมที่ทำงานเหมือน rsync แต่มีจุดมุ่งหมายในชีวิต สามารถเริ่มคัดลอกข้อมูล InnoDB และพื้นที่ตารางทั้งหมด มีความสามารถในการสร้างจุดตรวจสอบภายในและทำการกู้คืนความเสียหายของ InnoDB ในสถานที่เพื่อช่วยในการสำรองข้อมูล ณ จุดเวลาที่สมบูรณ์แบบ XtraBackup ยังมีคุณสมบัติพิเศษที่อนุญาตให้สร้างการสำรองข้อมูลเพิ่มเติม อีกคุณสมบัติเพิ่มเติมคือการสร้างไฟล์บันทึก InnoDB ซึ่งสร้างโดยการกู้คืนความผิดพลาดแบบแทนที่ด้วย นอกจากนี้ยังมีซอฟแวร์ห่อหุ้มเพื่อให้การคัดลอกตาราง MyISAM แช่แข็งเช่นกัน
มันทำงานด้านหลังของอินสแตนซ์ MySQL แต่มีความแตกต่างที่ชัดเจน เวลาในการสำรองข้อมูลจะขึ้นอยู่กับว่าการสำรองข้อมูลเสร็จสมบูรณ์แทนที่จะเริ่มเมื่อใด ดังนั้นหากคุณรัน XtraBackup เริ่มตั้งแต่เที่ยงคืนและการสำรองข้อมูลสิ้นสุดลงเวลา 12:15 น. ผลลัพธ์ของ mysqldump เมื่อคืนค่าจะสะท้อนข้อมูล ณ เวลา 12:15 น.
ขึ้นอยู่กับเครื่องมือจัดเก็บข้อมูลของคุณสำหรับตารางของคุณ ใช้งานได้กับตาราง ARCHIVE และ MyISAM เท่านั้นหน้า MySQL คู่มือนี้และต้องทำงานบนเครื่องเดียวกัน (เช่นไม่ได้ใช้ซ็อกเก็ตท้องถิ่นหรือ TCP / IP)
หากคุณทำการสำรองข้อมูลบนเซิร์ฟเวอร์และตารางของคุณทั้งหมดเป็นตาราง MyISAM ให้พิจารณาใช้ mysqlhotcopy แทนเนื่องจากสามารถสำรองข้อมูลได้เร็วขึ้นและเรียกคืนได้เร็วขึ้น
ฉันขอแนะนำให้ใช้หนึ่งในสคริปต์สำรอง mySQL จำนวนมากที่มีอยู่แล้วเพื่อลดความเจ็บปวดจากการทำให้ถูกต้อง
ฉันใช้ "automysqlbackup" ซึ่งเป็นเชลล์สคริปต์โอเพ่นซอร์สที่สามารถตั้งค่าเป็นงาน cron บนเซิร์ฟเวอร์ มันครอบคลุมเกือบทุกสถานการณ์การสำรองข้อมูลเท่าที่จะนึกออก: http://sourceforge.net/projects/automysqlbackup/ มันทำงานได้อย่างไม่มีที่ติสำหรับฉันเป็นเวลาหลายปี - แนะนำอย่างละเอียด
mysqlhotcopy เป็นสคริปต์ Perl ประมาณ '05 ดังนั้นมันจึงเพิ่มการพึ่งพาสำหรับ Perl และ Perl ต่างๆ ฉันจะผ่านสิ่งนี้
mysqldump เป็นโปรแกรม C ที่ถูกแจกจ่ายกับ MySQL และทำการบำรุงรักษาอย่างแข็งขัน หากคุณเพิ่มตัวเลือก -x มันจะล็อคตารางเพื่อให้คุณมีสีทอง
ฉันมีสคริปต์นี้เป็นส่วนตัวใน cron (คุณจะต้องลบ `escapes เหล่านั้นหากคุณต้องการเรียกใช้ด้วยมือ) และมันทำงานได้อย่างมีเสน่ห์สำหรับฉันสำรองข้อมูลแต่ละฐานข้อมูลของฉันไปยังไฟล์ในเครื่องรวมถึง ดัมพ์แบบเต็มของฐานข้อมูลทั้งหมด
และถ้าคุณมีฐานข้อมูลมากกว่าหนึ่งฐานที่นั่นคุณจะต้องถ่ายโอนทุนให้พวกเขาด้วย Maatkitจะช่วยคุณที่นั่นและคุณจะmk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql
สำรองตารางการสำรองไว้และพร้อมที่จะนำเข้าอีกครั้ง
ฉันยังรู้ว่ามีเครื่องมือการจัดการเซิร์ฟเวอร์จำนวนหนึ่งเช่น Interworx และ Ensim ใช้ mysqldump เพื่อสำรองฐานข้อมูลแล้วใช้คำสั่ง mysql เพื่อกู้คืน จากนี้ฉันจะเดาว่านี่เป็นหนึ่งในวิธีที่ดีที่สุด