備份資料庫腳本
#!/bin/sh
DBPATH=/server/backup
MYUSER=root
MYPASS=oldboy123
MYCMD="mysql -u$MYUSER -p$MYPASS"
MYDUMP="mysqldump -u$MYUSER -p$MYPASS"
[ ! -d $DBPATH ] && mkdir $DBPATH
for dbname in `$MYCMD -e "show databases;"|sed '1,2d'|egrep -v "mysql|schema"`
do
$MYDUMP $dbname|gzip >$DBPATH/${dbname}_$(date +%F).sql.gz
done
原理是使用了 mysqldump 工具把資料庫資料dump下來, 然後使用 gzip 工具壓縮.
如果資料量特别大(體積以g計算)就不太建議使用這個工具, 因為 mysqldump 有鎖表問題, 這裡就不讨論了.
參考資料
- 第11章代碼《跟老男孩學習Linux運維:Shell進階程式設計實戰》
- gzip Advanced-usage
- mysqldump的鎖表的問題