# dba_pilot **Repository Path**: hh688/dba_pilot ## Basic Information - **Project Name**: dba_pilot - **Description**: 数据库老司机必备神器,一个智能的 MySQL 数据库运维脚本,提供 SQL 执行、备份管理、语法检查等功能,帮助 DBA 更安全高效地管理数据库。 - **Primary Language**: Shell - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-21 - **Last Updated**: 2025-11-24 ## Categories & Tags **Categories**: dbmanager **Tags**: None ## README # DBA Pilot 数据库老司机必备神器,一个智能的 MySQL 数据库运维脚本,提供 SQL 执行、备份管理、语法检查等功能,帮助 DBA 更安全高效地管理数据库。 ## 🔧 核心功能 - **智能 SQL 分析**:自动识别 SQL 类型(SELECT/INSERT/UPDATE/DELETE/ALTER/CREATE/DROP 等) - **语法检查**:集成 SOAR 工具进行 SQL 语法验证 - **安全备份**:在执行 DML/DDL 前自动备份受影响的数据 - **行数检查**:大数据量操作前进行确认提醒 - **连接管理**:支持安全的 MySQL 连接配置 ## 🔥 解决核心痛点 ### 1. **防止误操作导致数据丢失** **痛点**:DBA 在执行 UPDATE、DELETE、ALTER 等危险操作时,一旦 WHERE 条件写错或忘记加条件,可能导致全表数据被误修改或删除。 **解决方案**: - 自动识别 SQL 类型和影响范围 - 执行前自动备份受影响的数据 - 大数据量操作(超过5000行)前强制确认 ### 2. **缺乏自动化的备份机制** **痛点**:手动备份流程繁琐,容易忘记备份,或者备份不完整。 **解决方案**: - 智能备份:根据 SQL 类型自动选择备份策略 - WHERE 条件备份:对 UPDATE/DELETE 只备份受影响的行 - 全表备份:对 ALTER/TRUNCATE 等操作备份整张表 ### 3. **SQL 质量无法保障** **痛点**:直接执行未经检查的 SQL,可能包含语法错误、性能问题或逻辑错误。 **解决方案**: - 集成 SOAR 进行语法检查和 SQL 优化 - 自动格式化 SQL 语句 - 执行前多轮验证 ### 4. **大批量操作风险不可控** **痛点**:处理海量数据时,无法预估影响范围,操作风险高。 **解决方案**: - 自动统计影响行数 - 设置阈值提醒(可配置的 ROW_REMINDER) - 交互式确认机制 ### 5. **运维流程不标准化** **痛点**:每个 DBA 操作习惯不同,缺乏统一的执行标准和流程。 **解决方案**: - 标准化的操作流程:检查 → 备份 → 执行 → 验证 - 统一的错误处理和日志记录 - 可重复的执行模式 ## 🎯 具体应用场景 ### 场景1:数据修复工单 **传统问题**:业务提交 UPDATE 修复数据,DBA 直接执行,如果 WHERE 条件错误,可能修复错数据。 **DBA Pilot 解决**: - 自动备份 WHERE 条件匹配的数据 - 显示影响行数并要求确认 - 执行失败自动保留备份文件 ### 场景2:表结构变更 **传统问题**:ALTER TABLE 操作如果失败或需要回滚,没有备份无法快速恢复。 **DBA Pilot 解决**: - 执行前全表备份 - 提供完整的回滚 SQL - 验证表存在性和结构兼容性 ### 场景3:数据清理任务 **传统问题**:清理历史数据时,误删重要数据无法恢复。 **DBA Pilot 解决**: - 删除前备份目标数据 - 大数据量删除强制确认 - 提供数据恢复方案 ## 🛡️ 安全特性 - 自动备份受影响数据 - 危险操作确认机制 - 表存在性验证 - 语法错误提前拦截 - 复杂操作自动全备 ## 安装要求 - Bash 环境 - `sshpass`:用于安全地传递密码。 - `mysqldump`:用于备份数据库表。 - `soar`:用于 SQL 语法分析。 ## 使用方法 ### 帮助信息 运行以下命令查看帮助信息: ```bash sh dba_pilot.sh --help ``` ### 备份表模式 运行以下命令以启用备份表模式: ```bash sh dba_pilot.sh -b ``` ### 工单模式 直接运行脚本以进入工单模式: ```bash sh dba_pilot.sh ``` ### soar安装 ``` # 下载 wget https://github.com/XiaoMi/soar/releases/download/0.9.0/soar.linux-amd64 -O soar # 移动 mv soar /usr/local/bin/ # 授权 chmod a+x /usr/local/bin/soar # 验证 soar --version ``` ## 配置 在脚本开头部分可以配置以下参数: - `MySQL_HOST`:MySQL 服务器地址。 - `MySQL_PORT`:MySQL 服务器端口。 - `MySQL_USER`:MySQL 用户名。 - `MySQL_PASSWORD`:MySQL 密码。 - `MySQL_DATABASE`:目标数据库名称。 - `BACKUP_DIR`:备份文件存储目录。 - `SQL_FILE`:SQL 输入文件路径。 - `SOAR_PATH`:`soar` 工具的路径。 - `ROW_REMINDER`:大数据量操作提醒阈值。 ## 注意事项 - 首次运行建议检查 `mysqldump` 版本和当前实例是否一致。 - 确保所有依赖命令已安装并配置好路径。 - 请自行验证后使用。 ## 许可证 本项目遵循 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。