linux下数据库定时备份

发布时间:2024年01月06日

1.编写shell脚本

#!/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文件路径执行:

./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
# 修改脚本权限
chmod 777 xxx.sh

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

? ? ? ? 3.1设置定时执行脚本

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

4.crontab服务相关命令

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

5.crontab命令选项

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

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

crontab -e

按a进入编辑模式

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

输入":wq"保存并退出

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

:w   保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w!   强制保存,不推出vi
:wq  保存文件并退出vi
:wq! 强制保存文件,并退出vi
q:  不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑

文章来源:https://blog.csdn.net/hu961691590/article/details/135427717
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。