开发谁都不敢绝对保证安全,定时备份数据库是非常有必要的,以下linux定时备份mysql数据库参考诸多网上案例,由本人实际操作整合,只为做个笔记分享
1.编写备份数据库脚本
cd /home
运行此处会让你输入要备份的那个数据库的密码
这边的–login-path=local1 对应脚本里面的,相当于变量,之所以这样搞是因为脚本里面写mysql账号密码会不安全
mysql_config_editor set --login-path=local1 --host=localhost --user=root --password
以下操作就是创建文件给权限编写脚本,一个个复制粘贴运行即可
mkdir backup
mkdir oldback
touch backup.sh
chmod u+x backup.sh
vi backup.sh
#下面的 --login-path=local1 相当于变量
export LANG=en_US.UTF-8
#注意:下面这几个变量需修改为你自己的
BackDir=/home/backup
LogFile=/home/backup/bak.log
DataBase=xxxxx#数据库名
if [ ! -d "$BackDir" ];then
mkdir $BackDir
fi
if [ ! -f "$LogFile" ]; then
touch "$LogFile"
fi
Date=`date +%Y%m%d_%H%M%S`
Begin=`date +%Y%m%d_%H:%M:%S`
#到备份目录下
cd $BackDir
#设置导出脚本名称
DumpFile=my_$Date.sql
#设置压缩包名称
DumpFileZip=juzi_$Date.sql.tgz
#导出数据库数据
mysqldump --login-path=local1 $DataBase > $DumpFile
#压缩sql脚本
tar -czvf $DumpFileZip $DumpFile
#删除sql脚本
rm $DumpFile
#下面这一段是保留最近7天的数据
count=$(ls -l *.tgz |wc -l)
if [ $count -ge 8 ]
then
file=$(ls -l *.tgz |awk '{print $9}'|awk 'NR==1')
rm -f $file
fi
Last=`date +"%Y%m%d_%H:%M:%S"`
echo start:$Begin end:$Last $DumpFileZip succ >> $LogFile
保存退出:wq
运行脚本
./backup.sh
2.设置定时运行脚本,这边使用的是crontab,一般linux会有自带
crontab -e
创建定时任务,我这边设置的是2分钟执行一次。各种时间结合自己业务来整,操作方式可百度
*/2 * * * * /home/backup.sh
退出保存
重载任务
/bin/systemctl reload crond.service
重启任务
/bin/systemctl restart crond.service