如何自動備份MySQL DB in Linux Server (AWS EC2)

Part 1. 首先,建立一個名叫db_backup.sh的script檔,存放在任何你想要放的路徑下。
vi db_backup.sh

基本寫法 (雙引號要留著,輸出檔名最好寫完整的絕對路徑,例: /home/db_backup/xxxx.sql )

mysqldump -u root --p"{PASSWORD}" {DB_NAME} > {FILE_NAME}.sql

如要備份所有Table

mysqldump -u root --p"{PASSWORD}" --all-databases > {FILE_NAME}.sql

如要省略建立database及table及不需要輸出trigger,可以加入額外的參數

mysqldump -u root -p"{PASSWORD}" -c -n -t --skip-triggers {DB_NAME} > {FILE_NAME}.sql

如要使用GZip壓縮

mysqldump -u root -p"{PASSWORD}" {DB_NAME} | gzip > {FILE_NAME}.sql.gz

如要使用GZip壓縮並且幫輸出的檔名字尾加上日期

mysqldump -u root -p"{PASSWORD}" {DB_NAME} | gzip > {FILE_NAME}_$(date +%Y-%m-%d).sql.gz

script內容寫好儲存了之後,將其修改為可被執行

chmod +x db_backup.sh
Part 2. 改寫crontab

修改crontab (請注意你目前登入的帳號身份,因為每個account都會有自己的crontab,可別改錯了。):

crontab -e

在crontab裡加入下面這行 (這樣寫的意思代表每天的晚上7點01分(GMT時區),執行後面指定路徑的script。前五個數字(*)分別代表: [分] [時] [日] [月] [Weekday])

01 19 * * * /home/myuser/db_backup/db_backup.sh

檢查cron是否有在運作

service crond status

Tags: , , ,

Leave a Reply