基于linux:mysql数据库的定时备份脚本

本文提供了一个用于MySQL数据库备份的bash脚本,该脚本会备份指定的数据库并保留最近七天的备份。脚本包含了备份、压缩、日志记录以及使用Cron进行定时任务设置的部分,确保在每天0点执行备份。此外,还提到了可能遇到的安全警告和解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 编写mysql数据库备份脚本编写及调度,保留最近七天。

vim mysql_backup.sh
#!/bin/bash
#mysql数据库的定时备份
host="你的IP"
db_user="用户名"
db_pwd="密码"
#备份数据库名列表,多个数据库用空格分开。
dbs="table01 table02"
#备份的路径
backuppath=/backup/mysql #你的备份路径
#当前的时间作为文件名
backupname=mysql_$(date +%Y%m%d%H%M%S)
day=7   #保留最近7天的备份
#判断备份目录是否存在,不存时新建目录。
[ ! -d $backupname ] &&mkdir -p $backuppath  

cd $backuppath   
echo "==========开始备份==========="
echo "备份的路径是 $backuppath/$backupname.tar.gz"
for db in $dbs
do 
   #备份单个数据为.sql文件。放到当前位置
   mysqldump -u${db_user} -p${db_pwd} --host=$host --skip-lock-tables -S /var/lib/mysql/mysql.sock $db >$backupname_$db.sql  
   #$? 得到上一个shell命令的执行的返回值。0表示执行成功。其他表示错误。并将将结果写入到日志中。
   if [ "$?" == "0" ]  
   then
       echo $(date +%Y%m%d%H%M%S)" $db  mysqldump sucess" >>mysql.log 
   else
       echo $(date +%Y%m%d%H%M%S)" $db  mysqldump failed" >>mysql.log
      exit 0
   fi
done
#压缩所有sql文件
tar -czf $backupname.tar.gz *.sql 
if [ "$?" == "0" ]
then
   echo $(date +%Y%m%d%H%M%S)" tar sucess">>mysql.log
else
   echo $(date +%Y%m%d%H%M%S)" tar failed">>mysql.log
   exit 0
fi
rm -f *.sql  #删除所有的sql文件
delname=mysql_$(date -d "$day day ago" +%Y%m%d)* #得到要删除的太旧的备份的名字。
rm -f $delname  #删除文件。
if [ "$?" == "0" ]
then
   echo $(date +%Y%m%d)" rm sucess">>mysql.log
else
   echo $(date +%Y%m%d)" rm failed">>mysql.log
   exit 0
fi
echo "==========备份完成==========="

2.可能会出现的错误

01.使用root不安全登录问题

Warning: Using a password on the command line interface can be insecure.

mysqldump: Got error: 1044: Access denied for user 'root'@'%' to database 'information_schema' when using LOCK TABLES

解决方法修改mysql配置文件

#vim /etc/my.conf

加入下面内容:

[mysqldump]

user=你的用户名

password=你的密码


3.创建定时调度任务

每天0:00开始备份。

crontab -e
0 */24 * * * /你的mysql_backup.sh所在地址/mysql_backup.sh >> /将日志写到的地址/crontab.log 2>&1

重启crontab服务

sudo systemctl restart crond.service

*注意:上面可以做五分钟一次的定时调度任务测试,成功后改为每天0:00备份。

4.查看日志,查看备份的内容,测试备份。

完成!打卡。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是刘望舒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值