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! 放弃所有修改,从上次保存文件开始再编辑
相关推荐
xuyanqiangCode1 分钟前
Ubuntu二进制安装Apache Doris(2.1版本)
linux·ubuntu·apache
ALex_zry2 分钟前
高并发系统渐进式改造技术调研报告:策略、架构与实战
java·运维·架构
Yue丶越3 分钟前
【Python】基础语法入门(四)
linux·开发语言·python
wljt5 分钟前
Docker常用命令
运维·docker·容器
木童6627 分钟前
Nginx 深度解析:反向代理与负载均衡、后端Tomcat
linux·运维·nginx
CheungChunChiu18 分钟前
Android 系统中的 NTP 服务器配置与选择逻辑详解
android·运维·服务器
赖small强33 分钟前
【Linux 网络基础】网络通信中的组播与广播:基础概念、原理、抓包与应用
linux·网络·broadcast·组播·广播·multicast
陌路2037 分钟前
Linux是如何收发网络包的?
linux·网络
草莓熊Lotso1 小时前
红黑树从入门到进阶:4 条规则如何筑牢 O (logN) 效率根基?
服务器·开发语言·c++·人工智能·经验分享·笔记·后端
0wioiw01 小时前
跨网络互联技术(Nginx反向代理)
服务器·网络·nginx