การสำรองข้อมูลอัตโนมัติของ mysql บน Ubuntu


12

ฉันมีเซิร์ฟเวอร์ Ubuntu ที่มี Mysql daatabase ฉันต้องการตั้งค่าการสำรองข้อมูลอัตโนมัติของฐานข้อมูลนี้ในตอนกลางคืนบนเซิร์ฟเวอร์อื่น (ตัวอย่างเช่น)

ฉันไม่รู้ว่าอะไรจะเป็นเครื่องมือที่ดีที่สุดสำหรับสิ่งนั้น หากใครมีคำแนะนำ ...

ขอบคุณล่วงหน้า.

คำตอบ:


29

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

สร้างไฟล์ mysqldump.sh

ซึ่งจะมีคำสั่ง mysql dump เราจะกำหนดเวลาในงาน cron (แทนที่ผู้ใช้รหัสผ่านและเส้นทางเพื่อให้ตรงกับสภาพแวดล้อมของคุณ):

mysqldump -u root -p<mysql_root_password> --all-databases | gzip > /desired/backup/folder/mysqldb_`date +%F`.sql.gz

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

ทดสอบสคริปต์

ตรวจสอบให้แน่ใจว่าสคริปต์มีสิทธิ์ดำเนินการ:

chmod +x /path/to/mysqldump.sh

รันสคริปต์:

sh /path/to/mysqldump.sh

และทดสอบว่าทำงานอย่างถูกต้อง (ไฟล์สำรองจะถูกสร้างในโฟลเดอร์สำรองที่ระบุ)

สร้างและกำหนดเวลางาน cron ใหม่

ในประเภทพรอมต์คำสั่ง

sudo crontab -e

และเพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของไฟล์:

30 23 * * * /path/to/mysqldump.sh

สิ่งนี้จะรันสคริปต์ทุกวันเวลา 23:30 น.

ขยายสคริปต์ง่ายๆนี้

มีหลายสิ่งที่คุณสามารถทำได้เพื่อปรับปรุงวิธีการสำรองข้อมูลนี้:

  • การสำรองข้อมูลไปยังระบบอื่น
  • ตรวจสอบพื้นที่ว่างในดิสก์
  • การรายงานทางอีเมล
  • ...

ดังนั้นอย่าจบที่นี่และทดลอง! :-)

ใช้เครื่องมือสำรองข้อมูลหรือบริการสำรองข้อมูลบนคลาวด์

แม้ว่าวิธีการข้างต้นเป็นวิธีที่ง่ายที่สุดและสามารถขยายให้เหมาะกับความต้องการเฉพาะของคุณได้ แต่ก็มีค่าที่ควรกล่าวถึงว่ามีทางเลือกอื่น:

  • backup-tools เช่น AutoMySQLBackup แอปพลิเคชั่นโอเพนซอร์ซซึ่งอาจช่วยให้กระบวนการกำหนดค่าอีเมลการแจ้งเตือนการบีบอัดการเข้ารหัสการหมุนและประเภท (เช่นเพิ่มขึ้น) ของการสำรองข้อมูลของคุณ สำหรับ Mai 2018 นั้นมีให้สำหรับ Ubuntu Server ผ่าน APT
  • บริการสำรองข้อมูลบนคลาวด์เช่น BackupBird, myRepono, Bitcan เป็นต้นซึ่งอาจน่าสนใจหากคุณจัดการเซิร์ฟเวอร์ฐานข้อมูลหลายตัวและต้องการจัดการการสำรองข้อมูลทั้งหมดจากส่วนกลาง

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

ลิงค์ที่มีประโยชน์ / การอ้างอิง:

Cron -> https://en.wikipedia.org/wiki/Cron

การถ่ายโอนข้อมูลของ MySQL -> https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html


4
ใช้date +%F- ซึ่งจะเลือกปี + เดือน + วันที่ที่เหมาะสมกับสถานที่ของผู้ใช้โดยอัตโนมัติ (ตัวอย่างเช่นฉันจะได้รับYYYY-MM-DD)
muru

โอ้ใช่ดีกว่ามาก ฉันจะแก้ไขคำตอบ :-)
Eduardo López

+1 คำตอบที่ดี: สิ่งที่จำเป็นที่นี่ไม่มากไม่น้อย
Jos

2
หากคุณต้องใช้ sudo เพื่อทำการดำเนินการนี้ (a) การเรียกใช้sudo crontab -eและอย่าลืมทำการเรียกใช้สคริปต์:chmod +x /path/to/mysqldump.sh
zinon

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