From 3724221a77174d3ce8582123eee815fc31cde40a Mon Sep 17 00:00:00 2001 From: k Date: Mon, 22 Dec 2025 15:34:55 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 324 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 324 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..d9b2e8a --- /dev/null +++ b/README.md @@ -0,0 +1,324 @@ +# 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