首页 > 其他分享 >Percona XtraBackup全备与增量备份脚本

Percona XtraBackup全备与增量备份脚本

时间:2024-05-15 10:55:21浏览次数:16  
标签:-- ROOT 全备 XtraBackup Percona MYSQL backup BAK DIR

1、全备脚本

#!/bin/bash

BAK_DIR_ROOT="/mysql/backup"
MYSQL_USERNAME="root"
MYSQL_PASSWORD="root"
MYSQL_CNF="/mysql/data/3306/my.cnf"

BAK_FULL_DIR=$BAK_DIR_ROOT/mysqlbackup`(date +%Y%m%d)`/mysqlfullbackup
BAK_LOG="$BAK_DIR_ROOT/mysqlbackup`(date +%Y%m%d)`/backup.log"

if [[ ! -d ${BAK_FULL_DIR} ]]; then
    mkdir -p ${BAK_FULL_DIR}
fi

xtrabackup --defaults-file=${MYSQL_CNF} --user=${MYSQL_USERNAME} --password=${MYSQL_PASSWORD} --backup --stream=xbstream --extra-lsndir="${BAK_FULL_DIR}/LSN_INFO" --target-dir=${BAK_FULL_DIR} --parallel=2 1> "${BAK_FULL_DIR}/mysql_backup_full.xbstream" 2>> ${BAK_LOG}

2、增量脚本,1h一次

#!/bin/bash

BAK_DIR_ROOT="/mysql/backup"
MYSQL_USERNAME="root"
MYSQL_PASSWORD="root"
MYSQL_CNF="/mysql/data/3306/my.cnf"

BAK_FULL_DIR=$BAK_DIR_ROOT/mysqlbackup`(date +%Y%m%d)`/mysqlfullbackup
BAK_LOG="$BAK_DIR_ROOT/mysqlbackup`(date +%Y%m%d)`/backup.log"

ti=`(date +%H)`
ti1=$((10#$ti - 0))
ti2=$((ti1 - 1))

#BASE_DIR=$BAK_DIR_ROOT/mysqlbackup`(date +%Y%m%d)`/mysqlincbackup${ti2}
INC_DIR=$BAK_DIR_ROOT/mysqlbackup`(date +%Y%m%d)`/mysqlincbackup${ti1}


if [[ ! -d ${INC_DIR} ]]; then
    mkdir -p ${INC_DIR}
fi

if [[ ${ti2} -eq 0 ]];then
    BASE_DIR=${BAK_FULL_DIR}
else
    BASE_DIR=$BAK_DIR_ROOT/mysqlbackup`(date +%Y%m%d)`/mysqlincbackup${ti2}
fi

xtrabackup --defaults-file=${MYSQL_CNF} \
           --user=${MYSQL_USERNAME} \
           --password=${MYSQL_PASSWORD} \
           --backup --stream=xbstream \
           --target-dir=${INC_DIR} \
           --incremental-basedir="${BASE_DIR}/LSN_INFO" \
           --extra-lsndir="${INC_DIR}/LSN_INFO" > "${INC_DIR}/mysqlincbackup${ti1}.xbstream" 2>> ${BAK_LOG}

3、清理脚本

#!/bin/bash

BAK_DIR_ROOT="/mysql/backup"

find ${BAK_DIR_ROOT} -type d -mtime +7 -name "mysqlbackup*" -exec rm -rf {} \;

4、crontab任务

5 0 * * */bin/bash  /mysql/backup/fullbackup.sh
5 1-23 * * */bin/bash  /mysql/backup/incrbackup.sh
30 0 * * */bin/bash  /mysql/backup/cleanbackup.sh

5、恢复脚本 ./恢复脚本.sh > ircrestore.log 2>&1

#!/bin/bash

#xbstream fullbackup 全量的先恢复
cd mysqlfullbackup
xbstream -x < mysql_backup_full.xbstream
cd ..
#xbstream incbackup 增量的
numdirall=`ls -l |grep -c "^d"`
ti1=$((10#$numdirall - 0))
numdir=$((ti1 - 1))
#echo ${numdir}

for ((i=1;i<=${numdir};i++))
 do
   cd mysqlincbackup${i}
   xbstream -x < mysqlincbackup${i}.xbstream
   sleep 2
   cd ..
 done
##prepare##
#1.prepare fullbackup
xtrabackup --prepare --apply-log-only --target-dir=mysqlfullbackup

#2.prepare incbackup
for ((j=1;j<${numdir};j++))
 do
   xtrabackup --prepare --apply-log-only --target-dir=mysqlfullbackup --incremental-dir=mysqlincbackup${j}
   sleep 2
 done

#3.prepare last incbackup
xtrabackup --prepare --target-dir=mysqlfullbackup --incremental-dir=mysqlincbackup${numdir}

#4.prepare all data fullbackup
xtrabackup --prepare --target-dir=mysqlfullbackup

##rsync data
rsync -avrP mysqlfullbackup/* --exclude='xtrabackup_*' /mysql/data/3306/data

#edit privileges
chown -R mysql:mysql /mysql/data/3306/data/*
chmod -R 775 /mysql/data/3306/data/*

标签:--,ROOT,全备,XtraBackup,Percona,MYSQL,backup,BAK,DIR
From: https://www.cnblogs.com/qcy-blog/p/18193419

相关文章

  • mysql备份工具 percona-xtrabackup
    1.mysqlfordocker安装#/opt/compose/zabbix/mysql.ymlversion:'3'services:mysql:image:mysql:8.0container_name:mysqlrestart:alwaysports:-3306:3306-33060:33060volumes:-/data/mysql:/var/lib......
  • Percona XtraDB Cluster 集群安装(PXC)
    PerconaXtraDBCluster集群安装安装环境:CentOSLinuxrelease7.6.1810(Core)16核64G在线安装离线安装配置文件在线安装添加仓库内容(在线安装)yuminstallhttps://repo.percona.com/yum/percona-release-latest.noarch.rpm-y安装:yuminstallPercona-XtraDB-Clu......
  • xtrabackup加密备份
    xtrabackup加密备份xtrabackup加密备份生成秘钥opensslrand-base6424MOERPHNbWQ4FifkF85nc7UxAZLu1SfR+加密备份xtrabackup--user=root--password=password--backup--compress--compress-threads=4--encrypt=AES256--encrypt-key="MOERPHNbWQ4FifkF85nc7UxAZLu1Sf......
  • xtrabackup脚本
    xtrabackup是MySQL的一种物理备份工具,相对于mysqldump,备份和还原速度更快,我写了一份可以进行备份+还原的脚本#!bin/bashall_bak_path="/opt/my_bak/xbak"#主备目录add_bak_path="/opt/my_bak/add"#增量备份目录mysql_data_path="/data/mysql/data"#数据库数据路......
  • 从MySQL全备中恢复单库或单表数据
    一、全库备份恢复单个库的数据流程:1、从全备份文件中将需要的库的建表语句和INSERT数据拿出来,然后再导入sed-n'/^--CurrentDatabase:`库名`/,/^--CurrentDatabase:`/p'全备SQL>库.sql2、导入库中mysql库名<库.sql3、检查数据二、全库备份恢复单个表的数据流......
  • percona-toolkit工具包的安装和使用
     1.检查和安装与Perl相关的模块  PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境。  依赖包检查命令为:rpm-qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL  如果有依赖包确实,可以使用下面的命令安装:yuminstallperl-DBIyuminstal......
  • 利用xtraBackup实现不停master服务做主从同步
    MySQL主从同步原理:MySQL主从同步是在MySQL主从复制(Master-SlaveReplication)基础上实现的,通过设置在MasterMySQL上的binlog(使其处于打开状态),SlaveMySQL上通过一个I/O线程从MasterMySQL上读取binlog,然后传输到SlaveMySQL的中继日志中,然后SlaveMySQL的SQL线程从中继日志中读......
  • mysql innobackupex xtrabackup 大数据量 备份 还原
    大数据量备份与还原,始终是个难点。当MYSQL超10G,用mysqldump来导出就比较慢了。在这里推荐xtrabackup,这个工具比mysqldump要快很多。 一、Xtrabackup介绍1,Xtrabackup是什么Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDBHot......
  • MySQL 8.0 的xtrabackup备份
     xtrabackup备份语句:   fname=`date+%F_%H-%M-%S`mkdir-p/mnt/dbbak/db_$fnamextrabackup--defaults-file=/etc/my.cnf-uhyb-phd-h/var/lib/mysql-S/var/lib/mysql/mysql.sock-Hlocalhost--port=3306--backup--parallel=4--target-dir=/mnt/dbbak/db_$f......
  • ubuntu安装最新版的xtrabackup
    官方文档:https://www.percona.com/doc/percona-xtrabackup/8.0/installation/apt_repo.html1,首先都在root用户下操作,不然提示权限不足wgethttps://repo.percona.com/apt/percona-release_latest.$(lsb_release-sc)_all.deb通过上面命令得到最新的安装包,会根据你的系统来,......