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 //删除压缩包
这个脚本,也可以放到定时任务里,至于怎么放,参考上面。