1.进入官网:https://www.percona.com/downloads 下载对应版本
说明:不同的mysql 对应的xtrabackup 版本也不同

废话不多说直接上菜
2.安装xtrabackup
rpm -ivh 对应的xtrabackup安装包;缺少依赖解决依赖!(一)备份前请赋予相关备份用户权限
# 1. 确认备份用户权限
# 确保用于执行备份的 MySQL 用户有足够的权限来执行 LOCK INSTANCE FOR BACKUP。这个权限通常需要 BACKUP_ADMIN 角色或者至少是 SELECT 和 RELOAD 的权限。
# 你可以通过以下 SQL 命令来授予必要的权限:
# GRANT BACKUP_ADMIN ON *.* TO 'your_backup_user'@'your_host';
# FLUSH PRIVILEGES;(二)备份脚本.sh
#!/bin/bash
#记得去掉账号、密码的双引号!
xtrabackup --defaults-file=/etc/my.cnf --user="数据库账号" --password="数据库密码" --backup --target-dir=/yingjian/dbbak/bakfile/bak_$(date "+%Y%m%d%H%M%S") --no-server-version-check
4.归档压缩脚本
#说明:保留90天备份文件并压缩成tar.gz文件。每日执行
#!/bin/bash
set -x
set -e
last_day=`date --date='1 days ago' +%F`
tar_day=1
remove_day=90
projectLogPath=/yingjian/dbbak/bakfile/
#删除压缩的日志的记录
function rmCompressionLog(){
if [ -d /yingjian/dbbak/mysqlbackuplog/ ];then
cd /yingjian/dbbak/mysqlbackuplog/
for CompressionLog in `find ./ -name "*.log" -ctime +${remove_day} -type f`;do
rm -rf $CompressionLog
done
fi
}
#参数1是path
function gzipLog() {
for log in `find ./ -name "bak_*" -type d `;do
echo "tar zcf $1 $log"
tar zcf $log.tar.gz $log && rm -rf $log
done
}
#参数1是path
function rmLog() {
for tarlog in `find ./ -name "*.tar.gz" -mtime +${remove_day} -type f`;do
echo "rm mysql bak data $tarlog"
rm -rf $tarlog
done
}
cd $projectLogPath
gzipLog
rmLog
rmCompressionLog
5.计划任务
crontab -e
#每日执行
1 0 * * * sh /yingjian/dbbak/backup.sh &>/yingjian/dbbak/mysqlbackuplog/backmysql-log.$(date +\%Y\%m\%d\%H\%M\%S).log
2 5 * * * sh /yingjian/dbbak/tarmysqldata.sh &>/yingjian/dbbak/mysqlbackuplog/tarmysqldata-log.$(date +\%Y\%m\%d\%H\%M\%S).log
评论区