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

设计一个船舶动力设备控制系统的备份与恢复方案,包括数据备份(运行数据、配置文件)和系统备份(操作系统、应用),并说明恢复流程。

CSSC 中国船舶集团华南船机有限公司计算机系统员难度:困难

答案

1) 【一句话结论】:针对船舶动力设备控制系统,构建分层多级备份体系,结合本地RAID存储与远程云备份,针对运行数据(实时数据库、消息队列)、配置文件、系统环境分别采用全量/增量/日志备份,确保在船舶复杂环境(网络中断、设备振动)下快速恢复,满足RTO≤1小时、RPO≤1小时的要求。

2) 【原理/概念讲解】:老师口吻,解释数据备份与系统备份。数据备份分为运行数据(动态高频变化的传感器数据、控制日志,存储在实时数据库或消息队列中)和配置文件(静态或低频变化的系统参数、设备配置,存储在文件系统);系统备份是操作系统(如CentOS 8)、应用软件(控制算法、监控界面)及系统配置的完整镜像。类比:运行数据像“实时流动的流水账”,配置文件像“固定的操作手册”,系统备份像“整个控制系统的完整“快照”。船舶环境特殊,需考虑网络不稳定、设备振动等影响,备份策略需容错。

3) 【对比与适用场景】:用表格对比不同备份类型。

备份类型定义特性使用场景注意点
全量备份备份所有目标数据(文件/系统)完整但占用空间大,恢复速度快配置文件(如系统参数)、不常变动的运行数据(如设备初始状态)需定期执行,占用存储空间
增量备份仅备份自上次备份以来发生变更的数据占用空间小,备份速度快,对系统性能影响小(高频执行)频繁变化的运行数据(如实时传感器数据、控制日志,每小时变化)需结合全量备份恢复,恢复流程稍复杂
日志备份(事务日志)记录数据库/系统的事务操作日志可精确恢复到故障前任意时间点(如分钟级)数据丢失或系统崩溃时,需精确恢复到故障前状态(如RPO≤1小时)需持续记录,日志文件需定期归档,避免日志文件过大导致备份失败
消息队列日志备份备份消息队列的日志文件(如Kafka的log.dir)可重播消息,恢复到故障前状态消息队列中的控制指令、状态更新(如Kafka)需保留日志文件,避免日志文件滚动导致数据丢失

4) 【示例】:假设船舶动力设备控制系统使用CentOS 8,运行数据包括MySQL数据库(存储传感器数据)和Kafka消息队列(存储控制指令),配置文件为系统配置文件(/etc/目录),系统备份为系统镜像。备份策略:

  • 运行数据(MySQL):每小时增量备份(mysqldump --incremental --master-data=2 --database sensor_data > /backup/mysql_incremental_$(date +%H).sql),每日0点全量备份(mysqldump --all-databases > /backup/mysql_full_$(date +%F).sql),每周0点日志备份(mysqldump --log-bin --master-data=2 --database sensor_data > /backup/mysql_log_$(date +%U).sql)。
  • 运行数据(Kafka):每小时日志备份(备份Kafka的log.dir目录,如rsync -avz /var/lib/kafka-logs/ /backup/kafka_logs_$(date +%H)),每日0点全量备份(备份整个Kafka日志目录)。
  • 配置文件:每日0点全量备份(tar -czf /backup/config_$(date +%F).tar.gz /etc)。
  • 系统备份:每周0点使用CloneZilla或系统克隆工具,备份整个系统盘(/分区),生成系统镜像文件(system_backup_$(date +%U).img),存储在本地RAID 5阵列(容错)。
  • 远程备份:每日0点将本地备份(配置文件、MySQL增量备份、Kafka日志备份)上传至阿里云OSS(远程存储),并启用自动备份策略,确保网络中断时本地备份优先,远程备份延迟不影响核心流程。

恢复流程:

  • 配置文件恢复:将最新全量配置文件解压覆盖/etc目录(tar -xzf /backup/config_$(date +%F).tar.gz -C /)。
  • 数据库恢复:先恢复全量备份(mysql -u root -p sensor_data < /backup/mysql_full_$(date +%F).sql),再按时间顺序应用增量备份(mysql -u root -p sensor_data < /backup/mysql_incremental_$(date +%H).sql),最后应用日志备份(mysql -u root -p sensor_data < /backup/mysql_log_$(date +%U).sql),处理锁表(如使用FLUSH TABLES WITH READ LOCK;锁定表,恢复后执行UNLOCK TABLES;)。
  • 消息队列恢复:将Kafka日志目录恢复到最新备份(rsync -avz /backup/kafka_logs_$(date +%H) /var/lib/kafka-logs/),重启Kafka服务(systemctl restart kafka),确保消息重播。
  • 系统恢复:将系统镜像文件挂载到故障服务器(dd if=/backup/system_backup_$(date +%U).img of=/dev/sda),启动系统,验证应用(如控制算法、监控界面)是否正常运行,检查传感器数据是否同步。

5) 【面试口播版答案】:面试官您好,针对船舶动力设备控制系统的备份与恢复方案,核心是构建容错型分层备份体系,结合本地RAID存储与远程云备份,确保在船舶复杂环境(网络中断、设备振动)下快速恢复。具体来说,运行数据(如传感器实时数据、控制指令)分为数据库和消息队列,分别采用增量/日志备份(RPO≤1小时),配置文件每日全量备份(RPO≤24小时),系统每周做完整镜像备份。恢复流程上,先恢复配置文件,再恢复数据库(结合全量、增量、日志备份处理锁表),恢复消息队列日志,最后恢复系统镜像,确保系统在故障后1小时内恢复,满足船舶动力设备对系统稳定性的要求。

6) 【追问清单】:

  • 问:备份频率如何确定?回答要点:根据RTO(恢复时间目标,如1小时)和RPO(恢复点目标,如1小时),运行数据高频变化,故每小时增量备份;配置文件变化少,每日全量备份。
  • 问:如何保证备份在船舶网络不稳定时的可靠性?回答要点:采用本地RAID 5存储(容错),同时每日上传至云存储(如阿里云OSS),网络中断时本地备份优先,远程备份延迟不影响核心流程。
  • 问:恢复数据库时遇到锁表怎么办?回答要点:先执行FLUSH TABLES WITH READ LOCK;锁定表,恢复后执行UNLOCK TABLES;,或使用事务日志恢复到锁表前的时间点。
  • 问:消息队列恢复时如何确保数据不丢失?回答要点:备份Kafka日志文件,恢复后重启服务,利用日志重播机制确保消息不丢失。
  • 问:系统备份工具兼容性如何?回答要点:使用CloneZilla(支持CentOS 8),或系统克隆工具(如dd命令),确保与操作系统版本兼容。

7) 【常见坑/雷区】:

  • 坑1:忽略消息队列等非数据库数据源的备份,导致控制指令丢失。雷区:未考虑消息队列的日志备份,恢复时数据不完整。
  • 坑2:增量备份频率过高导致系统性能下降,影响实时控制。雷区:未评估备份对CPU、I/O的影响,可能使控制算法延迟。
  • 坑3:恢复流程未考虑日志备份的归档,导致日志文件过大。雷区:日志文件占用过多空间,导致备份失败或恢复时间延长。
  • 坑4:本地RAID 5容错能力不足,如多盘故障导致数据丢失。雷区:未明确RAID 5的容错能力(如3盘故障不可用),导致备份不可靠。
  • 坑5:未进行恢复测试验证RTO/RPO,表述过于抽象。雷区:未给出具体测试流程(如定期演练、记录恢复时间),无法证明恢复效果。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1