1. SSH连接配置与密钥认证
通过SSH实现自动备份需先建立免密登录机制。使用ssh-keygen
生成RSA密钥对,将公钥上传至目标服务器authorized_keys
文件,配置示例:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host -p port
此配置可避免备份过程中手动输入密码,确保自动化流程的可靠性。
2. 数据库备份脚本编写
核心备份脚本需包含以下功能模块:
- 定义数据库连接参数与备份路径
- 使用
mysqldump
导出数据库文件 - 压缩备份文件并添加时间戳
- 清理历史备份文件
典型脚本结构:
#!/bin/bash
BACKUP_DIR="/data/backup
DATE=$(date +%Y-%m-%d)
mysqldump -hDB_HOST -uDB_USER -p'DB_PASS' DB_NAME | gzip > ${BACKUP_DIR}/backup_${DATE}.sql.gz
find ${BACKUP_DIR} -name "*.gz" -mtime +7 -delete
需注意mysqldump
命令中密码的特殊字符处理。
3. 定时任务自动化执行
通过Linux的crontab
实现定时备份,推荐配置:
- 每天凌晨执行:
0 2 * * * /path/to/backup.sh
- 每周全量备份:
0 3 * * 1 /path/to/full_backup.sh
配置完成后需验证任务日志:tail -f /var/log/cron
,确保定时任务正常触发。
4. 备份验证与日志管理
完整的备份方案应包含验证机制:
- 脚本内添加执行状态检查:
if [ $? -eq 0 ]; then ...
- 定期手动恢复测试备份文件
- 记录备份操作日志文件
建议在脚本中增加邮件或钉钉通知功能,实时获取备份状态信息。
通过SSH密钥认证、Shell脚本与Crontab的组合方案,可实现安全高效的数据库自动备份体系。建议每月检查备份完整性和恢复演练,确保灾难恢复能力。