# MySQL 8.0.24 备份恢复工具集 一套完整的 MySQL 8.0.24 备份恢复解决方案,包含全量备份、增量备份、恢复脚本及自动化测试。 ## 📁 项目结构 ``` mysql-backup-scripts/ ├── config.sh # 配置文件 ├── lib/ │ └── common.sh # 公共函数库 ├── full_backup.sh # 全量备份脚本 ├── incremental_backup.sh # 增量备份脚本 ├── restore_full.sh # 全量备份恢复脚本 ├── restore_incremental.sh # 增量备份恢复脚本 ├── test_backup_restore.sh # 自动化测试脚本 └── README.md # 本文档 ``` ## 🚀 快速开始 ### 1. 配置 编辑 `config.sh` 文件,根据实际环境修改以下配置: ```bash # MySQL 连接配置 MYSQL_HOST="localhost" MYSQL_PORT="3306" MYSQL_USER="root" MYSQL_PASSWORD="your_password" # 备份存储配置 BACKUP_ROOT_DIR="/data/mysql_backup" ``` ### 2. 设置脚本权限 ```bash chmod +x *.sh chmod +x lib/*.sh ``` ### 3. 执行备份 ```bash # 全量备份所有数据库 ./full_backup.sh # 全量备份指定数据库 ./full_backup.sh -d mydb # 增量备份 ./incremental_backup.sh ``` ## 📋 脚本说明 ### 全量备份 (full_backup.sh) 使用 `mysqldump` 进行逻辑全量备份。 **功能特点:** - 支持单数据库或所有数据库备份 - 记录 binlog 位置用于后续增量备份 - 支持压缩备份(gzip/pigz/lz4) - 自动清理过期备份 - 完善的错误处理和日志记录 **使用方法:** ```bash ./full_backup.sh [选项] 选项: -d, --database 指定要备份的数据库 (可多次使用) -c, --compress 启用压缩 (默认) -n, --no-compress 禁用压缩 -h, --help 显示帮助信息 示例: ./full_backup.sh # 备份所有数据库 ./full_backup.sh -d mydb # 仅备份 mydb 数据库 ./full_backup.sh -d db1 -d db2 # 备份多个指定数据库 ``` ### 增量备份 (incremental_backup.sh) 基于 MySQL binlog 的增量备份。 **功能特点:** - 基于 binlog 实现增量备份 - 从上次全量/增量备份点开始备份 - 支持压缩 - 自动清理过期备份 **前提条件:** - 必须先执行过全量备份 - MySQL 必须启用 binlog (`log_bin=ON`) - MySQL 用户需要 `REPLICATION SLAVE`, `REPLICATION CLIENT` 权限 **使用方法:** ```bash ./incremental_backup.sh [选项] 选项: -f, --full-backup 指定全量备份基准目录 -b, --base-backup 指定增量备份基准目录 (用于增量链) -c, --compress 启用压缩 (默认) -n, --no-compress 禁用压缩 -h, --help 显示帮助信息 示例: ./incremental_backup.sh # 基于最新全量备份 ./incremental_backup.sh -f /path/to/full_backup # 指定全量备份 ``` ### 全量备份恢复 (restore_full.sh) 从全量备份恢复数据库。 **功能特点:** - 支持恢复全部数据库或指定数据库 - 自动解压压缩备份 - 恢复前可选择性备份当前数据 - 支持验证恢复结果 **使用方法:** ```bash ./restore_full.sh [选项] <备份目录> 选项: -d, --database 仅恢复指定数据库 -y, --yes 跳过确认提示 --no-backup 恢复前不备份当前数据 -h, --help 显示帮助信息 示例: ./restore_full.sh /path/to/backup ./restore_full.sh -d mydb /path/to/backup ./restore_full.sh -y --no-backup /path/to/backup ``` ### 增量备份恢复 (restore_incremental.sh) 应用增量备份中的 binlog。 **功能特点:** - 基于 binlog 应用增量变更 - 支持指定时间点恢复 (PITR) - 自动处理备份链 **使用方法:** ```bash ./restore_incremental.sh [选项] <增量备份目录> 选项: -d, --database 仅恢复指定数据库 -t, --stop-datetime