备份数据库脚本
#!/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的锁表的问题