2023年7月30日发(作者:)
mysqldump定时备份数据库,形成压缩⽂件,并记录dump⽇志dump:在/home/下创建 ⽂件#!/bin/bash
#数据库⽤户名dbuser='root'#数据库⽤密码dbpasswd='123456'#hostsdbhost='192.168.1.1 192.168.1.2 '#⽇志备份路径logpath='/home/mysqlback/'#数据备份路径datapath='/home/mysqlback/'#⽇志记录头部for host in $dbhost;do#备份时间backtime=`date +%Y%m%d%H%M%S`echo "-------${backtime},${host}备份数据库开始-------------" >> ${logpath}//usr/bin/mysqldump -u${dbuser} -p${dbpasswd} -h ${host} -R -F -q --single-transaction --set-gtid-purged=OFF --add-drop-table --all-databases |gzip > ${datapaendtime=`date +%Y%m%d%H%M%S`if [ "$?" == 0 ];thenecho "${endtime},${host}数据库备份完成" >> ${logpath}/e#备份失败则进⾏以下操作echo "${endtime},${host}数据库备份失败!!" >> ${logpath}/
fiecho "${endtime},${host}备份数据库结束" >> ${logpath}/esize=`ls -l ${datapath}/${host}_${backtime}. | awk '{ print $5/1024 }'`
echo "备份⽂件名:${datapath}/${host}_${backtime}.,备份⽂件⼤⼩:${filesize}KB" >> ${logpath}/e#删除7天前备份,也就是只保存1天内的备份#find /home/mysqlback/ -type f -name "*." -mtime +7 -exec rm -f {} ; > /dev/null 2>&1#cleartime=`date +%Y%m%d%H%M%S`#echo "${cleartime},备份数据库历史数据清理结束" >> ${logpath}/# mysql -h127.0.0.1 -P3306 -uLibSvr -pP@$$W0rd backinfo -e "INSERT INTO backinfo(mark,host) VALUES ('${cleartime}备份数据库历史数据清理结束','10.1.122#mvtime=`date +%Y%m%d%H%M%S`#创建⽂件路径mkdir /home/rmmysqldata/${mvtime}#从备份⽂件中移动过期⽂件到"回收站"find /home/mysqlback/ -type f -name "*." -mtime +1 -exec mv {} /home/rmmysqldata/${mvtime}/ ; > /dev/null 2>&1#到回收站的⽬录下删除过期⽂件rm -rf /home/rmmysqldata/${mvtime}if [ "$?" == 0 ];thencleartime=`date +%Y%m%d%H%M%S`echo "${cleartime},历史数据清理结束" >> ${logpath}/o "${cleartime},历史数据清理结束" >> ${logpath}/e#备份失败则进⾏以下操作echo "${cleartime},历史数据清理结束" >> ${logpath}/#判断备份⽂件夹⼤⼩datafilesize=`du -s -h ${datapath}`
echo "${datapath}⽂件⼤⼩:${datafilesize}" >> ${logpath}/#循环判断分区使⽤率是否超过80%percent=`df -k | grep -v Filesystem| awk '{print int($5)}'`
for each_one in $percentdo #判断使⽤率是否超过90% if [ $each_one -ge 80 ];then #如果超过90 则把使⽤情况 echo "磁盘使⽤:${$each_one}" >> ${logpath}/ fidone赋予脚本权限:chmod +x /home/如果没有执⾏看下是不是cron没有启动/sbin/service crond status如果没有启动就启动 /sbin/service crond start定时执⾏:设置定时任务: [root@localhost ~]# crontab -e 或者:vi /etc/crontab
编写定时任务信息: * 0 * * * /bin/sh /home/
时间格式参考
/home/是dump脚本位置 上⾯这句代码,就是每天晚上12点使⽤sh命令⾃动执⾏我放在/home⽂件夹下⾯的⽂件。以上就实现了每天晚上12点⾃动备份数据库的操作了,我们想要测试⼀下看看⾏不⾏的话,我们可以先设置每分钟⼀次,然后去mysql_back_path定义的⽬录查看我们的备份⽂件每分钟的定时任务得这么写 */1 * * * * /bin/sh /home/编写完之后可以通过[root@localhost ~]# crontab -l来查看我们刚刚查看的创建的定时任务,如果有列出来那就说明我们的任务创建成功了。查看指定备份⽬录下是否进⾏备份,还原:在sql⽂件所在的⽂件夹执⾏[root@localhost mysqldata]# mysql -uroot -p < db22_er password:
即可还原,是不是很简单。当然万⼀有错误那就复杂了⼀、⽐如:数据库开启了gtid在还原时就会提⽰:mysql dump ERROR 1840 (HY000) at line 24: @@_PURGED can only be set when@@_EXECUTED is empty.解决⽅案1:/u010098331/article/details/50930520 reset 时增加参数--set-gtid-purged=OFF
不设置gtid⼆、⽣成的sql⽂件没有创建数据库语句 加 -B参考学习:
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690654943a387593.html
评论列表(0条)