把下方代码保存到mysqlbak.sh文件。

#!/bin/bash
# 名称:mysqlbak.sh
# 本地存放备份数据库目录
backupdir=/data/backup/database
# 如果文件夹不存在,创建文件夹
if [ ! -d $backupdir ]; then
  mkdir -p $backupdir
  echo -e "备份目录 $backupdir 创建成功。"
else
  echo "备份目录 $backupdir 已经存在。"
fi
 
# 设置mysql的登录用户名和密码(根据实际情况填写)
mysql_user="root"
mysql_password="password"
mysql_host="127.0.0.1"
mysql_port="3306"
# 数据库名
mysql_name="abc_com"
# 备份文件后缀时间
time="$(date +%Y%m%d_%H%M%S)"

echo "备份开始:" $(date +"%Y-%m-%d %H:%M:%S")
 
# 备份全部数据库
mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $mysql_name > $backupdir/mysql_backup_$time.sql

# 只保留7天的备份文件
# find $backupdir -mtime +1 -type f -name '*.sql' -exec rm -rf {} \;
# 只保留最新的备份文件
ls -t $backupdir/* | sed -n '2,$p' | xargs -I {} rm -rf {}

echo "备份成功:" $(date +"%Y-%m-%d %H:%M:%S")

手动备份

/bin/bash /root/backup.sh >/dev/null 2&>1

温馨提示:脚本弄好后执行看是否有问题,没问题后再设置每天自动备份。

编辑定时任务:

crontab -e

添加定时任务文件添加,为每日凌晨3点备份;定时任务时间匹配工具:https://tool.lu/crontab/

0 3 * * * sh /root/backup.sh > /dev/null 2&>1

查看定时任务:

crontab -l

参考:https://blog.csdn.net/weixin_43900374/article/details/126142590

关于shell中找不到命令的解决方法:http://www.gmloc.me/178.html