MySQL定时备份配置

2021-06-23  本文已影响0人  阿乐_822e

备份工具:为提高效率,故采用物理备份方案,备份工具使用Percona公司xtrabackup,版本号:2.4.4,每台数据库服务器上都要安装。

备份策略:每日凌晨03:00备份一次,数据存放于/mysqlbak目录下,备份日志名为“bak.log",只保留最新三份备份,过时备份自动删除

1、备份脚本

$ mkdir -p /mysqlbak && cd /mysqlbak
$ cat >>bak.sh<<EOF

#!/bin/bash
source /etc/profile
source ~/.bash_profile
cd /mysqlbak
let dirlen=`ls -lrt |grep 'dr'|awk {'print $9'}|wc -l`
echo -e "定时任务开始于: " `date` "\n" >>/mysqlbak/bak.log
""
if [  $dirlen -gt 2 ]; then
   let delline=` expr $dirlen-2`
   echo  -e "删除"$delline"个较早的备份目录\n">>/mysqlbak/bak.log
   ls -lrt |grep 'dr'|awk {'print $9'}|head -$delline>>/mysqlbak/bak.log
   ls -lrt |grep 'dr'|awk {'print $9'}|head -$delline|xargs rm -rf    
fi

echo  -e "现在开始备份数据库请等待.....\n">>/mysqlbak/bak.log
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root /mysqlbak>/dev/null
if [ $? -eq 0 ]; then
   echo  -e "Ok!备份成功!\n">>/mysqlbak/bak.log
   echo -e "定时任务结束于: " `date` "\n">>/mysqlbak/bak.log
   exit 0
else 
   echo  -e "Warn:备份失败!\n"
   exit 1
fi

EOF

$ chmod +x bak.sh

PS: 在脚本头部添加"source /etc/profile"与"
source ~/.bash_profile"是为了在执行时添加环境变量,否则下面的innobackupex 命令可能会发生找不到路径的情况,因为cron定时任务是不是自动添加环境变量设置的

2、添加定时任务

$ (crontab -l | grep "$cron_job"; echo "0 3 * * * /mysqlbak/bak.sh >/dev/null 2>&1") | crontab - 
$ crontabl -l
0 3 * * * /mysqlbak/bak.sh >/dev/null 2>&1

3、查看任务执行情况

$ cat /mysqlbak/bak.log
定时任务开始于:  2021年 06月 23日 星期三 00:21:01 CST 

删除3个较早的备份目录
2021-06-22_23-33-49
2021-06-22_23-33-50
2021-06-22_23-33-51
现在开始备份数据库请等待.....
Ok!备份成功!
定时任务结束于:  2021年 06月 23日 星期三 00:21:17 CST 
......
上一篇 下一篇

猜你喜欢

热点阅读