mysql自动备份脚本,MySQLdump+shell+crontab模式(附备份记录日志)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql自动备份脚本,MySQLdump+shell+crontab模式(附备份记录日志)相关的知识,希望对你有一定的参考价值。

1.mysql备份脚本
[[email protected] ~]# mkdir -p /root/data/backup #备份文件存放于此路径下
[[email protected] ~]# vim /root/mysql.back.sh
#!/bin/bash
backup_path="/root/data/backup"
user="root"
passwd="123456"
dbname="test"
host="localhost"
today=`date +"%Y%m%d-%H%M%S"`
sqlname=$dbname$today.sql
if [ -e /root/data/log_function.sh ]
then
source /root/data/log_function.sh
else
echo -e "\033[41;37m /root/data/log_function.sh is not exist. \033[0m"
exit 1
fi
backup()
log_correct "开始执行备份脚本,删除15天过期备份"
#backup
mysqldump -h$host -u$user -p$passwd $dbname >$backup_path/$sqlname

delete()
#delete expired 15 days
find /root/data/backup -mtime +15 -type f -name ‘*.sql‘ -exec rm -f  \;
#-mtime +15   15天以前

size()
cd /root/data/backup
dd=`du -sh $sqlname`
if [ -s ./$sqlname ] ; then 
 log_correct ‘fsl_prod备份正常‘
 log_correct $dd
else
 log_error ‘fsl_prod备份失败‘
fi

backup
delete
size

2.备份记录日志脚本

[[email protected] ~]# vim /root/data/log_function.sh
#!/bin/bash
#打印备份OK的记录日志输出到日志文件
function log_correct () 
DATE=`date +"%Y%m%d-%H%M%S"` #显示打印日志的时间
USER=$(whoami) #哪个用户在操作
echo "$DATE $USER execute $0 [INFO] [email protected]" >>/root/data/log_info.log #($0脚本本身,[email protected]将参数作为整体传输调用)

#log_error打印shell脚本中错误的输出到日志文件
function log_error ()

DATE=`date +"%Y%m%d-%H%M%S"`
USER=$(whoami)
echo "$DATE $USER execute $0 [INFO] [email protected]" >>/root/data/log_error.log #($0脚本本身,[email protected]将参数作为整体传输调用)

#fn_log函数 通过if判断执行命令的操作是否正确,并打印出相应的操作输出
function fn_log ()

if [ $? -eq 0 ]
then
log_correct "[email protected] sucessed!"
echo -e "\033[32m [email protected] sucessed. \033[0m"
else
log_error "[email protected] failed!"
echo -e "\033[41;37m [email protected] failed. \033[0m"
exit
fi

3.crontab计划

[[email protected] ~]# crontab -e
*/1 * * * * bash /root/mysql.back.sh   #每分钟执行一次

根据备份需求,设定备份执行计划
解释如下:



| | | | | |
| | | | | + year [optional]
| | | | +----- day of week (0 - 7) (Sunday=0 or 7)
| | | +---------- month (1 - 12)
| | +--------------- day of month (1 - 31)
| +-------------------- hour (0 - 23)
+------------------------- min (0 - 59)

4.效果

备份成功记录日志:
[[email protected] ~]# tail -f /root/data/log_info.log
20190618-021501 root execute /root/mysql.back.sh [INFO] 开始执行备份脚本,删除15天过期备份
20190618-021501 root execute /root/mysql.back.sh [INFO] fsl_prod备份正常
20190618-021501 root execute /root/mysql.back.sh [INFO] 4.0K test20190618-021501.sql
20190618-021601 root execute /root/mysql.back.sh [INFO] 开始执行备份脚本,删除15天过期备份
20190618-021601 root execute /root/mysql.back.sh [INFO] fsl_prod备份正常
20190618-021601 root execute /root/mysql.back.sh [INFO] 4.0K test20190618-021601.sql
备份文件:
[[email protected] ~]# ll /root/data/backup/
总用量 108
-rw-r--r--. 1 root root 1891 6月 18 01:46 test20190618-014657.sql
-rw-r--r--. 1 root root 1891 6月 18 01:49 test20190618-014916.sql
-rw-r--r--. 1 root root 1891 6月 18 01:52 test20190618-015202.sql
-rw-r--r--. 1 root root 1891 6月 18 01:53 test20190618-015301.sql
-rw-r--r--. 1 root root 1891 6月 18 01:54 test20190618-015401.sql
-rw-r--r--. 1 root root 1891 6月 18 01:55 test20190618-015501.sql
-rw-r--r--. 1 root root 1891 6月 18 01:56 test20190618-015601.sql
-rw-r--r--. 1 root root 1891 6月 18 01:57 test20190618-015701.sql
-rw-r--r--. 1 root root 1891 6月 18 01:58 test20190618-015801.sql

以上是关于mysql自动备份脚本,MySQLdump+shell+crontab模式(附备份记录日志)的主要内容,如果未能解决你的问题,请参考以下文章

MySql DUMP 自动备份数据库 Shell 脚本

mysql自动备份脚本,MySQLdump+shell+crontab模式(附备份记录日志)

mysql数据库自动定时备份脚本

基于mysqldump编写自动全备增备的shell脚本

032_备份 MySQL 的 shell 脚本(mysqldump 版本)

如何使用shell脚本每天自动备份mysql数据库