# Sql定时备份 **Repository Path**: ccbuc/sql-scheduled-backup ## Basic Information - **Project Name**: Sql定时备份 - **Description**: 从一台服务器定时备份到另一台服务器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-06-18 - **Last Updated**: 2025-06-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MySQL自动备份服务 这是一个基于.NET 8的Windows服务,用于自动备份MySQL 5.7数据库并传输到远程服务器。 ## 功能特性 - ✅ 定时自动备份MySQL数据库 - ✅ 支持mysqldump工具进行完整备份 - ✅ 自动传输备份文件到远程服务器 - ✅ 支持SCP/SFTP文件传输 - ✅ 自动清理过期备份文件 - ✅ 失败重试机制 - ✅ 详细的日志记录 - ✅ 可配置的备份策略 ## 系统要求 - Windows 10/11 或 Windows Server 2016+ - .NET 8.0 Runtime - MySQL 5.7+ (需要mysqldump工具) - OpenSSH客户端 (用于SCP传输) ## 安装配置 ### 1. 安装依赖 确保系统已安装以下工具: - MySQL客户端工具 (包含mysqldump) - OpenSSH客户端 ### 2. 配置设置 编辑 `appsettings.json` 文件,配置以下参数: ```json { "BackupSettings": { "SourceDatabase": { "Server": "localhost", "Port": 3306, "Database": "your_database_name", "Username": "your_username", "Password": "your_password" }, "TargetServer": { "Host": "192.168.1.100", "Port": 22, "Username": "backup_user", "Password": "backup_password", "BackupPath": "/backup/mysql/" }, "BackupSchedule": { "CronExpression": "0 2 * * *", "RetentionDays": 30, "MaxRetries": 3, "RetryIntervalMinutes": 5 }, "LocalBackupPath": "C:\\Backup\\MySQL\\", "LogPath": "C:\\Logs\\AutoBackupSql\\" } } ``` ### 3. Cron表达式说明 Cron表达式格式:`秒 分 时 日 月 周` 常用示例: - `0 2 * * *` - 每天凌晨2点 - `0 0 2 * * 0` - 每周日凌晨2点 - `0 30 1 * * 1-5` - 工作日凌晨1点30分 ### 4. 运行服务 ```bash # 开发环境运行 dotnet run # 发布并运行 dotnet publish -c Release dotnet AutoBackupSql.dll ``` ## 部署为Windows服务 ### 使用sc.exe安装服务 ```cmd # 以管理员身份运行 sc create "MySQLBackupService" binPath="C:\path\to\AutoBackupSql.exe" start=auto sc description "MySQLBackupService" "MySQL自动备份服务" sc start "MySQLBackupService" ``` ### 使用NSSM安装服务 ```cmd # 下载并安装NSSM nssm install MySQLBackupService "C:\path\to\AutoBackupSql.exe" nssm set MySQLBackupService Description "MySQL自动备份服务" nssm start MySQLBackupService ``` ## 监控和日志 ### 日志位置 - 应用程序日志:`C:\Logs\AutoBackupSql\` - Windows事件日志:应用程序和服务日志 ### 监控要点 1. 备份文件大小和数量 2. 传输成功率 3. 磁盘空间使用情况 4. 网络连接状态 ## 故障排除 ### 常见问题 1. **mysqldump命令未找到** - 确保MySQL客户端工具已安装 - 将MySQL bin目录添加到PATH环境变量 2. **SCP传输失败** - 检查SSH连接配置 - 验证目标服务器用户权限 - 确认目标路径存在且有写权限 3. **数据库连接失败** - 检查数据库连接字符串 - 验证用户权限 - 确认防火墙设置 ### 调试模式 设置日志级别为Debug以获取详细信息: ```json { "Logging": { "LogLevel": { "Default": "Debug" } } } ``` ## 安全考虑 1. **密码安全** - 使用用户密钥存储敏感信息 - 定期更换数据库和SSH密码 2. **网络安全** - 使用SSH密钥认证替代密码 - 限制SSH用户权限 - 配置防火墙规则 3. **文件权限** - 限制备份文件访问权限 - 定期清理临时文件 ## 扩展功能 ### 支持增量备份 可以扩展服务以支持增量备份,减少传输时间和存储空间。 ### 备份压缩 在传输前压缩备份文件以提高效率。 ### 邮件通知 添加备份成功/失败邮件通知功能。 ### 备份验证 定期验证备份文件的可恢复性。 ## 许可证 MIT License