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! 放弃所有修改,从上次保存文件开始再编辑
相关推荐
cuijiecheng201816 分钟前
Ubuntu下布署mediasoup-demo
linux·运维·ubuntu
独行soc2 小时前
2025年渗透测试面试题总结-2025年HW(护网面试) 33(题目+回答)
linux·科技·安全·网络安全·面试·职场和发展·护网
java龙王*2 小时前
开放端口,开通数据库连接权限,无法连接远程数据库 解决方案
linux
bcbobo21cn3 小时前
Linux命令的命令历史
linux·histsize·histfile
jingyu飞鸟4 小时前
linux系统源代码安装apache、编译隐藏版本号
linux·运维·apache
世事如云有卷舒4 小时前
Ubunt20.04搭建GitLab服务器,并借助cpolar实现公网访问
linux·服务器·gitlab
Little-Hu5 小时前
QML TextEdit组件
java·服务器·数据库
riverz12275 小时前
TCP backlog工作机制
服务器·网络·tcp/ip
2401_858286115 小时前
OS15.【Linux】gdb调试器的简单使用
linux·运维·服务器·开发语言·gdb
c30%007 小时前
内网渗透——红日靶场五
运维·服务器