当前位置: 首页 > news >正文

企业级 MySQL 8.0 物理备份实践:使用 XtraBackup 实现全量与增量自动备份

企业级 MySQL 8.0 物理备份实践:使用 XtraBackup 实现全量与增量自动备份

1. 为什么选择 XtraBackup?

  • 热备份:备份期间不影响数据库的读写。
  • 物理备份:直接拷贝数据文件,恢复速度极快。
  • 增量备份:仅备份自上次以来发生变化的数据块,节省空间。

2. 安装过程中的“深坑”

在 CentOS 7 上安装,最常见的问题是依赖项找不到或官方源下载过慢。

第一步:安装 Percona 源

sudoyuminstall-yhttps://repo.percona.com/yum/percona-release-latest.noarch.rpm

第二步:配置 ps80 库

sudopercona-release setup ps80

第三步:解决依赖(重点)

qpress压缩工具不在 Percona 源里,必须先装 EPEL。如果下载慢,建议换成阿里源或清华源:

sudoyuminstall-yepel-releasesudoyuminstall-ypercona-xtrabackup-80 qpress

3. 核心备份脚本:db_backup.sh

这个脚本集成了三个高级功能:

  1. 智能连接:Socket 找不到时自动切 TCP/IP。
  2. 重名处理:同日多次运行自动加_1,_2后缀。
  3. 链式增量:永远基于“上一次成功备份”进行增量。
#!/bin/bash# ========================================================# MySQL 全自动物理备份脚本 (XtraBackup 8.0)# ========================================================# --- 基础配置 ---USER="bkpuser"PASSWORD="bkpuser@2026"SOCKET="/tmp/mysql.sock"# 宝塔等面板常在 /tmp/ 下HOST="127.0.0.1"# 备用连接地址DATADIR="/www/server/data"# 数据库实际存储路径BACKUP_BASE="/data/backup"# 备份存放总目录# --- 自动处理时间与目录 ---DATE=$(date+%F)DAY_OF_WEEK=$(date+%u)# 1-7 (7为周日)LOG_FILE="$BACKUP_BASE/backup.log"mkdir-p"$BACKUP_BASE/full""$BACKUP_BASE/inc"exec>>"$LOG_FILE"2>&1echo"==================== 备份开始:$(date'+%Y-%m-%d %H:%M:%S')===================="# 1. 智能连接策略if[-S"$SOCKET"];thenCONN_OPTS="--socket=$SOCKET"elseecho"[Warning] Socket文件不存在,尝试通过HOST连接..."CONN_OPTS="--host=$HOST--port=3306"fi# 2. 目录冲突函数:如果目录存在,则重命名为 _1, _2...get_safe_dir(){localb_dir=$1;localb_name=$2;localtarget="$b_dir/$b_name"localcount=1while[-d"$target"];dotarget="${b_dir}/${b_name}_${count}"((count++))doneecho"$target"}# 3. 确定备份基准LAST_SUCCESS=$(ls-td$BACKUP_BASE/full/* $BACKUP_BASE/inc/*2>/dev/null|head-1)# 4. 执行备份逻辑if["$DAY_OF_WEEK"-eq7]||[-z"$LAST_SUCCESS"];then# 【全量备份】条件:周日 或 没有任何备份记录T_DIR=$(get_safe_dir"$BACKUP_BASE/full""${DATE}_full")echo"[Info] 执行全量备份 ->$T_DIR"xtrabackup--backup$CONN_OPTS--user=$USER--password=$PASSWORD--datadir=$DATADIR--target-dir=$T_DIR--no-server-version-checkelse# 【增量备份】条件:周一至周六 且 存在基准T_DIR=$(get_safe_dir"$BACKUP_BASE/inc""${DATE}_inc")echo"[Info] 执行增量备份 ->$T_DIR(基准:$LAST_SUCCESS)"xtrabackup--backup$CONN_OPTS--user=$USER--password=$PASSWORD--datadir=$DATADIR--target-dir=$T_DIR--incremental-basedir=$LAST_SUCCESS--no-server-version-checkfi# 5. 结果校验if[$?-eq0];thenecho"[Success] 备份已完成。"elseecho"[Error] 备份进程异常退出!"[-d"$T_DIR"]&&rm-rf"$T_DIR"# 清理残余空目录exit1fi# 6. 自动清理 (保留近30天的备份)# find $BACKUP_BASE -mtime +30 -type d -exec rm -rf {} \;echo"==================== 备份结束:$(date'+%Y-%m-%d %H:%M:%S')===================="

4. 如何在灾难发生时进行恢复?

增量备份的恢复像“接龙”一样,必须按顺序准备。

步骤 A:整理全量(Prepare)

这一步是把未提交的事务回滚,应用日志。

xtrabackup--prepare--apply-log-only --target-dir=/data/backup/full/2026-01-04_full

步骤 B:合并所有增量

按照时间顺序,依次将增量包合并进全量包。最后一个包不需要加--apply-log-only

# 合并周一增量xtrabackup--prepare--apply-log-only --target-dir=/data/backup/full/2026-01-04_full --incremental-dir=/data/backup/inc/2026-01-05_inc# ... 如果还有周二、周三,以此类推 ...

步骤 C:恢复到数据目录

停止 MySQL 并清理旧数据(注意先做原始数据的移动备份!):

systemctl stop mysqldmv/www/server/data /www/server/data_oldmkdir/www/server/data xtrabackup --copy-back --target-dir=/data/backup/full/2026-01-04_fullchown-Rmysql:mysql /www/server/data systemctl start mysqld

5. 日常维护建议

  1. 权限:确保执行脚本的用户对/data/backup有写权限。
  2. 空间:物理备份占用空间大,建议开启find命令清理 30 天前的备份。
  3. 验证:备份成功不代表能恢复,建议每季度拉取一个增量包到测试机做恢复演练。

http://www.jsqmd.com/news/194526/

相关文章:

  • 双碳目标下综合能源系统低碳运行优化调度Matlab实现
  • 2024年五大颠覆性技术趋势
  • “救命!代码写不动了?Agent技术让小白程序员秒变大神,2小时掌握AI编程黑科技!“
  • ssh+tmux实现socket命令行交互
  • word将所选内容超链接为文章其他内容
  • C++ 入门导引
  • http通信鉴权(三)基于 Session + CSRF Token 的 Cookie 认证
  • AI Agent太香了!给大模型装上“记忆+规划+手脚“,编程小白也能秒变效率大神!
  • 2026最新多功能清洁剂工厂top5推荐榜,广东广州等地优质公司及批发源头厂家深度解析/选择指南 - 全局中转站
  • playwright工具(二)获取token应用于mcp
  • 计算机毕业设计,基于springboot的房屋租赁管理系统,附源码+数据库+论文,包远程安装调试运行
  • 大模型开发必备!一张图看懂AI Agent!五层架构深度剖析,从Prompt到Action的完整闭环
  • playwright工具(一)自动打开浏览器
  • 【Azure Web App】Github Action部署Jar包到App Service报400错误
  • 杂记 - 状态模式 VS. 责任链模式
  • 【干货】Google最新AI Agent报告出炉:小白程序员也能5分钟上手企业级Agent开发!效率直接翻倍,2026年你的工作将被彻底重构!
  • 托盘目标检测数据集VOC+YOLO格式4517张1类别
  • Windows OLE 零点击远程代码执行漏洞(CVE-2025-21298)技术分析与防护
  • 未来已来!Android Studio的AI Agent让编程变得如此简单,开发者:这比antigravity还牛!小白也能秒变大神,不会你就真的out了!
  • geo优化排名系统---内容式生成搜索引擎逻辑开发
  • 吐血推荐8个AI论文工具,助研究生轻松搞定论文写作!
  • 想高薪!0基础怎么转行做AI,2026挑战三个月转行AI大模型岗,需要多久?
  • 笔记本外接屏突然黑屏?我踩了 3 个坑,最后靠回退 N 卡驱动救了急
  • 英语_阅读_Baduanjing_待读
  • PID控制算法十年演进(2015–2025)
  • AI coding 智能体设计系列-03-路径上下文-如何给材料而不喂爆上下文
  • 零基础也能玩转大模型!5分钟带你从入门到精通AI智能体开发,小白程序员直接起飞!
  • 大模型学习路线图:程序员入门到精通(含300集视频教程+免费资源)_大模型学习路线(2026最新)神仙级大模型教程分享
  • CF1202E You Are Given Some Strings...
  • 2026最新银条饰品生产公司top5推荐,湖南郴州等地优质工厂/供货商解析及选择指南 - 全局中转站