linux mysql定时备份
项目需要定时备份数据库,以下是自己的操作笔记
1.检查磁盘空间
# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 3.6G 34G 10% / tmpfs 16G 0 16G 0% /dev/shm
这是我当前linux服务器的情况,至于为什么是这样子,我也不清楚(我是半路接过来的,无奈)
根据上面的信息,我就把备份文件放在/dev目录下面
2.创建备份目录
cd /dev mkdir backup cd backup
3.创建备份shell命令
vi bkDatabaseName.sh
输入如下内容
1 #!/bin/bash 2 mysqldump -uusername -ppassword -hmysqlIp DatabaseName > /dev/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
对备份进行压缩
mysqldump -uusername -ppassword -hmysqlIp DatabaseName | gzip > /dev/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
注意:
把 username 替换为实际的用户名;
把 password 替换为实际的密码;
把mysqlIp替换mysql的IP;
把 DatabaseName 替换为实际的数据库名;
4.添加可执行权限
chmod u+x bkDatabaseName.sh
添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;
./bkDatabaseName.sh
5.添加定时执行任务
1 # crontab 2 -bash: crontab: command not found
执行 crontab 命令如果报 command not found,就表明没有安装;
安装crontab请参考:http://www.cnblogs.com/dxy1451713982/p/8081569.html
添加定时任务
crontab -e
*/1 * * * * /dev/backup/bkDatabaseName.sh
表示每分钟执行一次,注:对于cron表达式,建议自己百度
6.测试任务是否执行
1 # tail -f /var/log/cron 2 Dec 21 17:33:10 iZ2318jid47Z run-parts(/etc/cron.daily)[22449]: finished makewhatis.cron 3 Dec 21 17:33:10 iZ2318jid47Z run-parts(/etc/cron.daily)[15753]: starting mlocate.cron 4 Dec 21 17:33:10 iZ2318jid47Z run-parts(/etc/cron.daily)[22460]: finished mlocate.cron 5 Dec 21 17:33:10 iZ2318jid47Z run-parts(/etc/cron.daily)[15753]: starting prelink 6 Dec 21 17:33:27 iZ2318jid47Z run-parts(/etc/cron.daily)[23799]: finished prelink 7 Dec 21 17:33:27 iZ2318jid47Z run-parts(/etc/cron.daily)[15753]: starting readahead.cron 8 Dec 21 17:33:27 iZ2318jid47Z run-parts(/etc/cron.daily)[23811]: finished readahead.cron 9 Dec 21 17:33:27 iZ2318jid47Z run-parts(/etc/cron.daily)[15753]: starting tmpwatch 10 Dec 21 17:33:27 iZ2318jid47Z run-parts(/etc/cron.daily)[23849]: finished tmpwatch 11 Dec 21 17:33:27 iZ2318jid47Z anacron[15719]: Job `cron.daily' terminated
或者去你存放备份文件的目录下查看,是否有备份文件生成;
7.备份完成后删除5天前的备份文件
find /dev/backup -name databaseName"*.sql.gz" -type f -mtime +5 -exec rm -rf {} \; > /dev/null 2>&1 find /dev/backup -name databaseName"*.sql" -type f -mtime +5 -exec rm -rf {} \; > /dev/null 2>&1