mysql的innobackupex备份

一、innobackup备份说明

1、安装innobackupex

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install percona-xtrabackup-24
yum install qpress ##innobackupex支持压缩导出,这里安装压缩工具
innobackupex -version

2、备份

2.1、全量备份

innobackupex --defaults-file=/data/3307/my.cnf --user=root --password=My1qaz234! --socket=/data/3307/mysqldata/mysql.sock /data/mysqlback/innobackup_dir/

2.2、第一次增量备份

innobackupex --defaults-file=/data/3307/my.cnf --user=root --password=My1qaz234! --socket=/data/3307/mysqldata/mysql.sock --incremental /data/mysqlback/increment_data/ --incremental-basedir=/data/mysqlback/innobackup_dir/2023-09-13_16-50-33 #指定上次完整备份目录
#其中,–incremental指明是增量备份,–incremental-basedir指定上次完整备份或者增量备份文件的位置。这里的增量备份其实只针对的是InnoDB,对于MyISAM来说,还是完整备份。

2.3、再次增量备份

innobackupex --defaults-file=/data/3307/my.cnf --user=root --password=My1qaz234! --socket=/data/3307/mysqldata/mysql.sock --incremental /data/mysqlback/increment_data --incremental-basedir=/data/mysqlback/increment_data/2023-09-13_17-50-14 #指定上次增量备份目录

3、恢复

3.1、预备完整备份

innobackupex --defaults-file=/data/3307/my.cnf --apply-log --redo-only /data/mysqlback/innobackup_dir/2023-09-13_16-50-33

3.2、合并第一次备份内容

innobackupex --defaults-file=/data/3307/my.cnf --apply-log --redo-only /data/mysqlback/innobackup_dir/2023-09-13_16-50-33 --incremental-dir=/data/mysqlback/increment_data/2023-09-13_17-50-14

3.3、合并第二次备份内容

innobackupex --defaults-file=/data/3307/my.cnf --apply-log --redo-only /data/mysqlback/innobackup_dir/2023-09-13_16-50-33 --incremental-dir=/data/mysqlback/increment_data/2023-09-13_17-54-34

3.4、恢复完整

innobackupex --defaults-file=/data/3307/my.cnf --copy-back /data/mysqlback/innobackup_dir/2023-09-13_16-50-33/

二、innobackupex定时备份实践

1、全量备份脚本

#!/bin/bash

dateformat=$(date +"%Y-%m-%d")

direc=/data/backup
fulldir=$direc/full
logdir=/var/log/backuplog
fulllog=$logdir/fulllog
applylog=$logdir/applylog

User=backup
PassWord=xxxxx
DefaultMy=/data/3307/my.cnf
Socket=/data/3307/mysqldata/mysql.sock

for i in $fulldir $fulllog $applylog
do
    if [ ! -d $i ]; then
        mkdir -pv $i
    fi
done


if [ ! -d $fulldir/$dateformat ]; then
    #echo "$fulldir/$dateformat"+$fulldir/$dateformat
    #echo "$fulllog/fullbackup.log.$dateformat"+$fulllog/fullbackup.log.$dateformat
    innobackupex --defaults-file=$DefaultMy --socket=$Socket --user=$User --password=$PassWord  $fulldir/$dateformat >> $fulllog/fullbackup.log.$dateformat 2>&1 &
    #innobackupex --user=PassWord --apply-log --use-memory=1024MB  dateformat >> dateformat 2>&1 &
else
    echo "Don't backup database, because of directroy not found!" >> $logdir/errorfull.log.$dateformat 2>&1 &
    exit 1
fi

2、增量备份脚本

#!/bin/bash
# define some variables

#数据库相关配置
User=backup
PassWord=xxxxxx
DefaultMy=/data/3307/my.cnf
Socket=/data/3307/mysqldata/mysql.sock

dateEarly=$(date -d "yesterday" +%Y-%m-%d)
dateIncre=$(date +"%Y-%m-%d")

direc=/data/backup
basedir=$direc/full
logdir=/var/log/backuplog
incrementlog=$logdir/incrementlog


if [ ! -d $basedir/$dateEarly ]; then
  echo "Don't backup database, because of early directroy not found!" >> $incrementlog/errorincrement.log.$dateIncre 2>&1 &
  exit 1
else
  if [ ! -d $basedir/$dateIncre ]; then
    mkdir -p $basedir/$dateIncre
    incrementdirname=$(ls -lt $basedir/$dateEarly | sed -n 2p |awk '{print $9}')
    innobackupex --defaults-file=$DefaultMy --user=$User --password=$PassWord --socket=$Socket --incremental $basedir/$dateIncre --incremental-basedir=$basedir/$dateEarly/$incrementdirname >> $incrementlog/increment.log.$dateIncre 2>&1 &
  fi
fi

3、备份文件定时删除脚本(防止撑爆磁盘)

#!/bin/bash
directory="/data/backup/full"  # 替换为目标目录的路径

# 仅保留最近一周的备份数据
find "$directory" -mtime +7 -exec rm -rf {} \; >> /var/log/deldir.log 2>&1

4、定时任务

每周日凌晨一点完成一次全量备份,周一-周六凌晨一点完成一次增量备份,每天凌晨六点删除备份目录中旧的备份数据
0 1 * * 7 sh /data/script/innobackup_full.sh
0 1 * * 1-6 sh /data/script/innobackup_incremental.sh
0 6 * * * sh /data/script/delete_old_files.sh

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值