灾难恢复和备份
灾难恢复确保系统在灾难发生时能够快速恢复。
📋 备份策略
备份策略设计:
🎯 备份实现示例
bash
#!/bin/bash
# MySQL备份脚本示例
# 配置
DB_HOST="localhost"
DB_USER="root"
DB_PASSWORD="password"
DB_NAME="mydb"
BACKUP_DIR="/backup/mysql"
RETENTION_DAYS=7
# 全量备份
backup_full() {
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/full_backup_$DATE.sql"
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASSWORD \
--single-transaction \
--routines \
--triggers \
$DB_NAME > $BACKUP_FILE
# 压缩备份文件
gzip $BACKUP_FILE
echo "Full backup completed: $BACKUP_FILE.gz"
}
# 增量备份(基于binlog)
backup_incremental() {
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/incremental_backup_$DATE.sql"
# 刷新日志
mysql -h $DB_HOST -u $DB_USER -p$DB_PASSWORD \
-e "FLUSH LOGS;"
# 备份binlog
mysqlbinlog --read-from-remote-server \
--host=$DB_HOST \
--user=$DB_USER \
--password=$DB_PASSWORD \
--raw \
--result-file=$BACKUP_FILE \
mysql-bin.*
gzip $BACKUP_FILE
echo "Incremental backup completed: $BACKUP_FILE.gz"
}
# 清理旧备份
cleanup_old_backups() {
find $BACKUP_DIR -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete
echo "Old backups cleaned up"
}
# 主流程
main() {
backup_full
cleanup_old_backups
}
main🎯 容灾方案
多机房部署架构: