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! 放弃所有修改,从上次保存文件开始再编辑
相关推荐
YiSLWLL2 分钟前
Django+Nginx+uwsgi网站使用Channels+redis+daphne实现简单的多人在线聊天及消息存储功能
服务器·数据库·redis·python·nginx·django
罔闻_spider1 小时前
cookie反爬----普通服务器,阿里系
运维·服务器
小熙智菏——Sunspot2 小时前
Linux系统性能优化技巧
linux·运维·性能优化
fanxiaohui121382 小时前
浪潮信息自动驾驶框架AutoDRRT 2.0,赋能高阶自动驾驶
运维·服务器·网络·人工智能·机器学习·金融·自动驾驶
极客代码2 小时前
【Linux】内核驱动模块
linux·内核·内核模块·unix·驱动
EEE1even3 小时前
Linux服务器驱动安装
linux·运维·服务器
钰爱&3 小时前
【操作系统】Linux之网络编程(TCP)(头歌作业)
linux·网络·tcp/ip
xiaozhiwise3 小时前
Linux syscall
linux
我们的五年3 小时前
【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置
linux·服务器·数据库·学习·mysql·adb
行码棋3 小时前
Linux无sudo权限将zsh作为默认shell
linux·服务器