linux下mysql的自动备份,以及备份文件的清理

linux下备份,其实挺简单,因为有一个比较强大的命令mysqldump。

具体命令的用法,大家自行搜索吧。

下面只说命令脚本的写法。有很多人,写了一大堆,我这里只写几个简单的

先定义一个备份文件,如baksql.sh,  然后vi之。

dayhour=`date +%Y%m%d-%H`   //定义时间

sqlfile="filename-${dayhour}.sql"    //sql文件名,一小时一个备份,所以只用到了小时
zipfile="filename-${dayhour}.sql.tar.gz"    //压缩包文件名文件名,

cd /opt/backup/dbname/       //备份目录,这个目录可自行定义,dbname可以根据自己库名定义


mysqldump -uroot -p'password' dbname > ${sqlfile}    //把库备份到sql文件中,root用mysql用户 
                                               //名,password是密码,dbname是库名,自行替换。

tar -cvzf ${zipfile} ${sqlfile}    //打包
 
rm -f ${sqlfile}              //为了不至于占太多容量,把sql文件删除,因为这个文件太大。

把这个baksql.sh文件加入到定时任务里

用命令   crontab -e,

 我是这样设定的

30 7-23 * * * /opt/backup/dbname-bak.sh
//7点到23点的,整点30分,执行这个命令。 

具体的参数,大家也可以自行搜索。自行调整执行时间。

crontab -e设置完成后,和vi的退出方式一样,esc,然后wq保存,一般来说,会提示

crontab: installing new crontab

3分种后生效。

就可以正常备份了。

过了设定的时间点,就可以到/opt/backup/dbname/下去查看备份文件了。

有时候会备份失败,参考这个贴子

Linux定时任务脚本执行时mysqldump备份异常的问题_羌俊恩的博客-CSDN博客_mysqldump 备份失败

加了一行命令  source /etc/profile,变成这样。一般来说,就好了。

dayhour=`date +%Y%m%d-%H`

sqlfile="filename-${dayhour}.sql"
zipfile="filename-${dayhour}.sql.tar.gz"

cd /opt/backup/dbname/

source /etc/profile

mysqldump -uroot -p'password' dbmane > ${sqlfile}

tar -cvzf ${zipfile} ${sqlfile}

rm -f ${sqlfile}

当然了,时间一长,备份会越来越多,这个时候,我们可以再加一个删除之前旧备份的脚本,比如这样。

dayhour=`date +%Y%m%d-%H -d'7 days ago'`    //我这里选择的是删除7天以前的备份

echo $dayhour    

rm -rf /opt/backup/dbname/dbname"-"${dayhour}.sql    //删除sql

rm -rf /opt/backup/dbname/dbname"-"${dayhour}.sql.tar.gz    //删除压缩包

这个脚本,也可以放到定时任务里,至于怎么放,参考上面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lefen313

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值