侧边栏壁纸
博主头像
CYC的个人博客博主等级

学习使人进步

  • 累计撰写 114 篇文章
  • 累计创建 14 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Linux数据库mysql8备份Xtrabackup篇

我是一条酸菜鱼
2026-03-26 / 0 评论 / 0 点赞 / 7 阅读 / 2752 字

Linux数据库mysql8备份Xtrabackup篇

1.进入官网:https://www.percona.com/downloads 下载对应版本

说明:不同的mysql 对应的xtrabackup 版本也不同

废话不多说直接上菜

2.安装xtrabackup

rpm -ivh 对应的xtrabackup安装包;缺少依赖解决依赖!

3.备份脚本.sh

(一)备份前请赋予相关备份用户权限

# 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

0

评论区