51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

教育系统中,课程录制和用户数据需要定期备份,以应对灾难恢复。请设计一套备份策略,包括备份类型(全量、增量)、备份频率、存储位置以及恢复时间目标(RTO)和恢复点目标(RPO)。

好未来SRE难度:中等

答案

1) 【一句话结论】:采用“全量+增量+事务日志/快照一致性保障”的混合策略,结合本地高性能存储(如SSD)+云存储(如对象存储)的多级架构,课程录制RTO≤2小时(本地优先,云为备选),用户数据RPO≤1小时(通过增量+日志补全),确保灾难恢复时数据一致且快速恢复。

2) 【原理/概念讲解】:全量备份是对数据集的完整拷贝,像“拍一张包含所有元素的完整照片”,包含所有数据,恢复时无需依赖历史备份,但占用空间大、时间长。增量备份仅备份自上次备份以来发生变更的数据,像“记录照片变化的部分”,节省空间和时间,但恢复时需结合全量+增量。RTO(Recovery Time Objective)是恢复时间目标,即从灾难发生到系统恢复可用的最大时间,需结合业务中断影响设定(如课程录制中断超过2小时影响用户学习体验)。RPO(Recovery Point Objective)是恢复点目标,即允许丢失的最大数据量,需结合业务数据变化频率设定(如用户数据每小时更新,RPO≤1小时意味着最近1小时数据可能丢失,通过增量备份快速补全)。数据一致性保障通过数据库事务日志(如MySQL的binlog)或文件系统快照(如LVM快照),确保备份时数据处于一致状态,避免恢复后数据冲突。

3) 【对比与适用场景】:

备份类型定义特性使用场景注意点
全量备份每次备份整个数据集(覆盖所有数据)占用空间大、时间长,恢复快(无需依赖历史备份)首次备份、系统迁移、灾难恢复基础备份需足够存储空间,备份时间长(可能影响业务,需非高峰期执行)
增量备份仅备份自上次备份以来发生变更的数据(基于时间点或变更日志)占用空间小、时间短,恢复复杂(需结合全量+增量)定期(如每日)备份,减少备份时间对业务的影响恢复时需合并全量+增量,处理数据一致性(需依赖一致性保障机制)
事务日志备份定期备份数据库事务日志(如MySQL binlog),用于恢复到最近时间点时间点恢复(精确到秒级),但需结合全量备份数据库事务频繁的场景,需快速恢复到灾难前时间点需确保日志不丢失,备份后验证日志连续性

4) 【示例】:以MySQL数据库(课程录制数据)和文件系统(用户数据)为例,展示备份流程。

# 1. 数据库全量备份(每周日0点,非高峰期)
#!/bin/bash
DB_NAME="course_recording"
BACKUP_DIR="/data/backup/db/full"
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
mysqldump --single-transaction --lock-tables=false $DB_NAME > $BACKUP_DIR/full_${DATE}.sql

# 2. 数据库增量备份(每日凌晨1点,基于binlog位置)
#!/bin/bash
DB_NAME="course_recording"
BACKUP_DIR="/data/backup/db/incremental"
DATE=$(date +%Y%m%d)
LAST_FULL=$(ls -t $BACKUP_DIR/full_* | head -1 | awk -F'_' '{print $2}')
LAST_BINLOG=$(grep -oP 'Position: \K[0-9]+' /var/lib/mysql/relay-log.index | tail -1)
mysqldump --single-transaction --lock-tables=false --master-data=2 --incremental --incremental-lsn=$LAST_BINLOG $DB_NAME > $BACKUP_DIR/inc_${DATE}_${LAST_FULL}.sql

# 3. 文件系统快照备份(用户数据,每周日0点)
#!/bin/bash
USER_DATA_DIR="/data/user_data"
BACKUP_DIR="/data/backup/fs/snapshot"
DATE=$(date +%Y%m%d)
# 创建LVM快照(假设用户数据在LVM卷上)
lvm snapshot create user_data_snapshot $USER_DATA_DIR /data/backup/fs/snapshot/user_data_${DATE}
# 备份快照(压缩后存本地)
tar -czf $BACKUP_DIR/full_${DATE}.tar.gz /data/backup/fs/snapshot/user_data_${DATE}

# 4. 文件系统增量备份(每日凌晨1点,基于增量文件)
#!/bin/bash
USER_DATA_DIR="/data/user_data"
BACKUP_DIR="/data/backup/fs/incremental"
DATE=$(date +%Y%m%d)
LAST_FULL=$(ls -t $BACKUP_DIR/full_* | head -1 | awk -F'_' '{print $2}')
# 获取上次全量备份后新增/修改的文件(避免全量扫描)
find $USER_DATA_DIR -newer $BACKUP_DIR/full_${LAST_FULL}.tar.gz -type f -exec tar -r -f $BACKUP_DIR/inc_${DATE}_${LAST_FULL}.tar.gz {} \;

5) 【面试口播版答案】:面试官您好,针对教育系统的课程录制和用户数据备份,我会设计一套兼顾数据一致性和恢复效率的混合策略。核心是采用“全量+增量+事务日志/快照”的备份类型,结合本地高性能存储(如SSD)+云存储(如阿里云OSS)的多级架构。具体来说:课程录制数据(数据库)每周日0点做全量备份(非高峰期),每日凌晨1点做增量备份(基于binlog位置);用户数据(文件系统)每周日0点做LVM快照全量备份,每日凌晨1点做增量备份(仅备份新增/修改文件)。本地备份用于快速恢复(课程录制RTO≤2小时,用户数据RPO≤1小时,即最近1小时数据可能丢失,通过增量备份快速补全),云存储用于长期归档。同时,通过数据库事务日志或文件系统快照确保备份时数据一致,避免恢复后冲突。这样既能保证数据安全,又能平衡存储成本和恢复效率。

6) 【追问清单】:

  • 问:如何保证备份数据一致性?
    回答要点:通过数据库事务日志(如MySQL binlog)或文件系统快照(如LVM快照),确保备份时数据处于一致状态,避免恢复后数据冲突。
  • 问:备份失败时如何处理?
    回答要点:设置备份失败告警(如邮件/短信),自动重试(最多3次),若多次失败则人工介入,保留失败前备份状态,避免数据丢失。
  • 问:RTO/RPO的设定依据是什么?
    回答要点:根据业务影响分析,课程录制中断超过2小时会影响用户学习体验,用户数据每小时更新,丢失1小时内可接受,因此设定RTO≤2小时、RPO≤1小时。
  • 问:如何验证备份的有效性?
    回答要点:每周进行恢复测试(从备份中恢复部分数据到测试环境),验证数据完整性和可恢复性,并记录测试报告。
  • 问:如何控制备份成本?
    回答要点:短期备份存本地(高可用),长期转低成本云存储(如OSS的归档存储),定期清理过期备份(如保留最近30天全量+最近90天增量),优化压缩比减少存储空间。

7) 【常见坑/雷区】:

  • 忽略数据一致性保障,导致恢复后数据冲突(如未使用事务日志或快照)。
  • RTO/RPO设定不合理(如RTO设为24小时无法满足课程录制恢复需求)。
  • 存储位置仅考虑成本,忽略可用性(本地磁盘故障导致备份不可用)。
  • 未验证备份有效性,灾难发生时无法恢复(如未定期测试恢复流程)。
  • 增量备份累积问题(长期不清理导致恢复耗时过长,如保留过多增量文件)。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1