# binlog_backup **Repository Path**: chenkaiingo/binlog_backup ## Basic Information - **Project Name**: binlog_backup - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-02-18 - **Last Updated**: 2025-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## binlog_backup ### 项目概述 本项目是一个用于 MySQL Binlog 自动备份的工具,支持定时任务调度、多实例配置、日志记录等功能。通过 APScheduler 库实现定时任务调度,并使用 PyYAML 和 python-dotenv 管理配置文件和环境变量。 ### 目录结构 ```plaintext binlog_backup/ ├── binlog_scheduler.py # 主程序逻辑 ├── config/ │ └── instances.yaml # 实例配置文件 ├── logs/ │ └── scheduler.log # 日志文件 └── requirements.txt # 依赖包列表 ``` ### 安装依赖 在项目根目录下执行以下命令安装所需的 Python 包: ```bash pip install -r requirements.txt ``` ### 配置文件 #### `config/instances.yaml` 该文件用于配置需要备份的 MySQL 实例信息。每个实例包含以下字段: - `id`: 实例唯一标识符 - `host`: MySQL 主机地址 - `port`: MySQL 端口 - `user`: MySQL 用户名 - `password`: MySQL 密码 - `cron`: 定时任务表达式(Cron 表达式) - `backup_root`: 备份文件存储路径 - `mysql_client`: MySQL 客户端工具路径 - `winrar`: WinRAR 压缩工具路径 示例配置: ```yaml instances: - id: "db_test_01" host: "127.0.0.1" port: 3306 user: "root" password: "" cron: "*/3 * * * *" # 每3分钟执行一次 backup_root: "D:\\mysql_binlog" mysql_client: "D:\\mysql_client" winrar: "D:\\Program Files\\WinRAR\\WinRAR.exe" - id: "db_test_02" host: "mymymy.mysql.polardb.cn-chengdu.rds.aliyuncs.com" port: 3306 user: "book" password: "" cron: "*/2 * * * *" # 每2分钟执行一次 backup_root: "D:\\mysql_binlog" mysql_client: "D:\\mysql_client" winrar: "D:\\Program Files\\WinRAR\\WinRAR.exe" ``` ### 密码加密 创建password文件: ```bash password;encrypted; New; book; ``` #### 加密后的密码填入对应配置文件中 ### 运行项目 确保所有配置正确无误后,在项目根目录下运行以下命令启动备份服务: ```bash python binlog_scheduler.py ``` ### 日志记录 所有操作日志会记录到 `logs/scheduler.log` 文件中,日志级别为 `INFO`。日志格式如下: ```plaintext %(asctime)s - %(levelname)s - %(message)s ``` ### 注意事项 1. **密码安全**:请确保 `.gitignore` 文件中包含 `config/instances.yaml`,以防止敏感信息泄露。 2. **路径设置**:根据实际环境调整 `backup_root`、`mysql_client` 和 `winrar` 路径。 3. **Cron 表达式**:合理设置 Cron 表达式,避免过于频繁的任务调度导致系统负载过高。 ### 异常处理 如果遇到异常情况,请参考 `scheduler.log` 中的日志信息进行排查。日志中会记录详细的错误信息,包括命令执行失败的具体原因。 --- 如有任何问题或建议,请联系项目维护者。