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))
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
cd mysqlfullbackup
xbstream -x < mysql_backup_full.xbstream
cd ..
numdirall=`ls -l |grep -c "^d"`
ti1=$((10#$numdirall - 0))
numdir=$((ti1 - 1))
for ((i=1;i<=${numdir};i++))
do
cd mysqlincbackup${i}
xbstream -x < mysqlincbackup${i}.xbstream
sleep 2
cd ..
done
xtrabackup --prepare --apply-log-only --target-dir=mysqlfullbackup
for ((j=1;j<${numdir};j++))
do
xtrabackup --prepare --apply-log-only --target-dir=mysqlfullbackup --incremental-dir=mysqlincbackup${j}
sleep 2
done
xtrabackup --prepare --target-dir=mysqlfullbackup --incremental-dir=mysqlincbackup${numdir}
xtrabackup --prepare --target-dir=mysqlfullbackup
rsync -avrP mysqlfullbackup/* --exclude='xtrabackup_*' /mysql/data/3306/data
chown -R mysql:mysql /mysql/data/3306/data/*
chmod -R 775 /mysql/data/3306/data/*
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律