linux下数据库定时备份

1.编写shell脚本

javascript 复制代码
#!/bin/bash
USER="root"
PASSWORD="Root.36#336"
DATABASE="backup_test"
HOSTNAME="127.0.0.1"
DATE=`date '+%Y%m%d_%H%M%S'` #日期格式(作为文件名) 
BACKUP_DIR=/home/mysql/DB_backup/ #备份文件存储路径
LOGFILE=/home/mysql/log/mysql_$DATABASE.log #日记文件路径
DUMPFILE=$DATABASE-$DATE.sql #备份文件名
ARCHIVE=$DATABASE-$DATE.tar.gz #压缩文件名
OPTIONS="-h$HOSTNAME -u$USER -p$PASSWORD $DATABASE"
#mysqldump --help
#判断备份文件存储目录是否存在,否则创建该目录
if [ ! -d $BACKUP_DIR ] ;
then
        mkdir -p "$BACKUP_DIR"
fi
#开始备份之前,将备份信息头写入日记文件
echo " " >> $LOGFILE
echo " " >> $LOGFILE
echo "-----------------------------------------------" >> $LOGFILE
echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE
echo "----------------------------------------------- " >> $LOGFILE
#切换至备份目录
cd $BACKUP_DIR
#使用mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件
mysqldump $OPTIONS > $DUMPFILE
#判断数据库备份是否成功
if [[ $? == 0 ]]; then
    #创建备份文件的压缩包
    tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
    #输入备份成功的消息到日记文件
    echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE
    #删除原始备份文件,只需保 留数据库备份文件的压缩包即可
    rm -f $DUMPFILE
else
    echo "Database Backup Fail!" >> $LOGFILE
fi
#输出备份过程结束的提醒消息
echo "Backup Process Done"

2.测试脚本

2.1在xxx.sh文件路径执行:

javascript 复制代码
./xxx.sh         //xxx.sh是自己的可执行脚本

如果在shell中配置的目录生成了压缩包且包中的sql文件内容正常即可以进行创建定时任务。

2.2测试脚本时可能遇到的问题

2.2.1.坏的解释器: 没有那个文件或目录

注:如果通过复制成xxx.sh文件上传到linux上,需要进入上传的xxx.sh文件目录执行:

sed -i 's/\r$//' xxx.sh //xxx.sh是自己的可执行脚本

2.2.2报-bash: ./xxx.sh: Permission denied
javascript 复制代码
# 修改脚本权限
chmod 777 xxx.sh

3.使用crontab定时执行备份脚本

3.1设置定时执行脚本

javascript 复制代码
#1. 以编辑模式打开个人的crontab配置文件
crontab --e
 
#2. 加入一下这行://xxx.sh必须是全路径,5个*号是cron表达式,下面表示每分钟执行一次,方便测试
* * * * * /bin/bash /home/mysql/xxx.sh    

4.crontab服务相关命令

javascript 复制代码
service crond status    //查看crond状态
service crond start     //启动服务 
service crond stop      //关闭服务 
service crond restart   //重启服务 
service crond reload    //重新载入配置

5.crontab命令选项

javascript 复制代码
# 修改 crontab 文件. 如果文件不存在会自动创建
crontab --e  
# 显示 crontab 文件
crontab --l 
# 删除 crontab 文件 
crontab -r
# 删除 crontab 文件前提醒用户
crontab -ir

6.crontab -e编辑保存相关命令

javascript 复制代码
crontab -e

按a进入编辑模式

编辑完成后按ESC键退出编辑模式。

输入":wq"保存并退出

以下是按ESC键后跳到其他命令模式,然后:

:w   保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w!   强制保存,不推出vi
:wq  保存文件并退出vi
:wq! 强制保存文件,并退出vi
q:  不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
相关推荐
牧以南歌〆33 分钟前
在Ubuntu主机中修改ARM Linux开发板的根文件系统
linux·arm开发·驱动开发·ubuntu
互联网搬砖老肖1 小时前
运维打铁: MongoDB 数据库集群搭建与管理
运维·数据库·mongodb
Antonio9151 小时前
【音视频】HLS简介与服务器搭建
运维·服务器·音视频
夜月yeyue2 小时前
设计模式分析
linux·c++·stm32·单片机·嵌入式硬件
kfepiza2 小时前
Debian的`/etc/network/interfaces`的`allow-hotplug`和`auto`对比讲解 笔记250704
linux·服务器·网络·笔记·debian
无妄-20242 小时前
软件架构升级中的“隐形地雷”:版本选型与依赖链风险
java·服务器·网络·经验分享
艾伦_耶格宇2 小时前
【docker】-1 docker简介
运维·docker·容器
R.X. NLOS3 小时前
VS Code远程开发新方案:使用SFTP扩展解决Remote-SSH连接不稳定问题
运维·服务器·ssh·debug·vs code
cuijiecheng20183 小时前
Ubuntu下布署mediasoup-demo
linux·运维·ubuntu
独行soc5 小时前
2025年渗透测试面试题总结-2025年HW(护网面试) 33(题目+回答)
linux·科技·安全·网络安全·面试·职场和发展·护网