一、编写备份脚本
#创建备份文件
vi DATABASE_BF.sh
#写入备份命令
#!/bin/sh
MYSQL_CMD=/www/server/mysql/bin/mysqldump
MYSQL_USER=数据库用户名
MYSQL_PWD=数据库密码
DATA='date +%Y-%m-%d_%H_%M_%S'
for DBname in luntan taskdb
do
${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/backup/${DBname}_$(date +%Y-%m-%d_%H_%M_%S).sql.gz
done
命令详解:MYSQL_CMD的路径为mysql自带逻辑备份命令mysqldump文件的路径
二、添加可执行权限
chmod +x DATABASE_BF.sh
测试运行:./DATABASE_BF.sh
三、写入定时任务
1、查看有没有安装crontab
2、使用命令crontab -e将脚本加入定时任务
crontab -e
#定时脚本命令
30 2 * * * /backup/BFDatabases.sh 指定每天2:30执行一次
3、crontab文件格式
* * * * * command
minute hour day month week command
分 时 天 月 星期 命令
四、备份冗余问题
以上脚本每天都会定时执行,且不会自动删除,因此会占用磁盘空间,因此需要进一步优化,在每次执行完毕备份后,对前几天的备份数据进行一个删除。
#!/bin/sh
MYSQL_CMD=/www/server/mysql/bin/mysqldump
MYSQL_USER=root
MYSQL_PWD=454346fa
DATA='date +%Y-%m-%d_%H_%M_%S'
for DBname in luntan taskdb
do
${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/backup/${DBname}_$(date +%Y-%m-%d_%H_%M_%S).sql.gz
done
#这行命令的作用是:查找/backup/目录下3天之前的文件并且删除
find /backup/ -mtime +3 -type f | xargs rm -f
注:以上只是一个简单的定时备份,在生产中,需根据实际情况进行备份,可采用备份工具xtrabackup与添加定时任务来进行编写脚本进行备份。