xtrabackup 备份脚本

说明

转载请注明出处说明

一、数据库权限

  • 数据库备份账号 对于完全备份使用必需的最小特权。
CREATE USER 'xtrabackup'@'localhost' IDENTIFIED BY 'aka123456';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO'xtrabackup'@'localhost';

二、脚本内容

  • 使用条件:1、设置 MainDir 备份目录与 AUTH 数据库账号密码即可
# 复制黏贴即可
cat <<'EOF'> /var/spool/cron/root
#!/bin/bash
####################################
####### 作者: Akiraka         #######
####### 网址: www.akiraka.net #######
####################################

# 主目录
MainDir="/backup/"
# 日志目录
LogsDir="${MainDir}`date +%F`/logs/"
# 全库备份的目录
FullDir="${MainDir}`date +%F`/full/"
# 增量备份的目录
IncrDir="${MainDir}`date +%F`/incr-`date +%H`"
# 时间格式为2017-06-22-12:13:14
DATE=`date +%Y-%m-%d-%H:%M:%S`
# 用户名密码
AUTH="--user=xtrabackup --password=aka123456"
# 清理历史备份天数,默认清理7天前备份
CleanDay="7"

# 检查目录是否存在,不存在则创建
[ -d ${LogsDir} ] || mkdir -p ${LogsDir} && echo "${DATE} 创建日志目录成功" >> ${LogsDir}/info.log
[ -d ${FullDir} ] || mkdir -p ${FullDir} && echo "${DATE} 创建全备目录成功" >> ${LogsDir}/info.log
[ -d ${IncrDir} ] || mkdir -p ${IncrDir} && echo "${DATE} 创建增备目录成功" >> ${LogsDir}/info.log

# 全量备份
function Full() {
  innobackupex --defaults-file=/etc/my.cnf ${AUTH} --no-timestamp ${FullDir} &>> ${LogsDir}/full.log
  echo "${DATE} 全量备份成功" >> ${LogsDir}/full.log
}

# 增量备份
function Incr() {
  innobackupex --defaults-file=/etc/my.cnf ${AUTH} --no-timestamp --incremental-basedir ${FullDir} --incremental ${IncrDir} &>> ${LogsDir}/incr.log
  echo "${DATE} 增量备份成功" >> ${LogsDir}/incr.log
}

# 清理备份
function Clean() {
  find ${MainDir} -maxdepth 1 -name `date +"%Y-%m-%d" -d "-${CleanDay} day"` -exec rm -rf {} \;
  echo "${DATE} 清理历史成功" >> ${LogsDir}/clean.log
}

# 判断传参
if [ ${1} == "full" ];then
  Full
elif [ ${1} == "incr" ];then
  Incr
elif [ ${1} == "clean" ];then
  Clean
else
  echo "${DATE} 参数输入错误,请重新输入"
fi
EOF

三、创建定时任务

cat <<'EOF'> /var/spool/cron/root
# 每天12点01分进行全量备份
1 0 * * * bash /data/backup_mysql full >  /dev/null 2>&1
# 每天12点01分清理历史备份
1 0 * * * bash /data/backup_mysql clean >  /dev/null 2>&1
# 每45分增量备份一次
*/45 * * * * bash /data/backup_mysql incr >  /dev/null 2>&1
EOF

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/1132.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
xtrabackup 备份脚本
说明 转载请注明出处说明 一、数据库权限 数据库备份账号 对于完全备份使用必需的最小特权。 CREATE USER 'xtrabackup'@'localhost' ……
<<上一篇
下一篇>>
文章目录
关闭
目 录