SQLServer数据库备份:选对方式才不丢数据
SQLServer备份的核心不是随便点一次备份按钮,而是搭配对应备份类型、固定周期计划,既能节省服务器资源,又能保证故障后精准恢复数据。很多人备份翻车,都是只用单一完整备份,忽略了差异和日志备份的搭配,关键时刻根本挽回不了最新业务数据。
先搞懂三种核心备份类型,这是所有备份操作的基础,选错类型,再频繁的备份都是无用功。
三种主流备份,适配不同业务场景
完整备份是最基础的备份方式,会一次性打包数据库里的所有数据、表结构、索引和存储过程,生成完整的bak备份文件。操作最简单,恢复也最直接,不管数据库出什么问题,只要有完整备份文件就能还原。但它的短板很明显,文件体积大、耗时久,会占用大量服务器IO资源,频繁操作会拖慢业务系统运行。
不用天天做。
所以完整备份只适合低频操作,绝大多数生产环境都会把它放在凌晨业务低谷时段执行。
差异备份只备份上一次完整备份之后,所有新增、修改、删除的数据,不重复备份原有旧数据。它的体积极小、速度极快、几乎不占用服务器性能,完美弥补了完整备份的缺陷。唯一的缺点是恢复时不能单独使用,必须依托最近一次的完整备份,再叠加对应的差异备份才能还原完整数据。
事务日志备份是保障数据零丢失的关键,也是很多新手最容易忽略的操作。它会记录两次备份之间数据库的每一条操作日志,小到一条数据新增,大到批量数据修改,全部精准留存。它的优势是支持时间点还原,哪怕服务器下午3点崩溃,只要有最新日志备份,就能恢复到2点59分的所有数据,把数据丢失量压缩到极致。
这里踩过一个实打实的坑。之前维护一套电商后台,只做了每日凌晨完整备份和每日傍晚差异备份,偷懒没开日志备份。某天中午服务器硬盘突发损坏,当天上午新增的200多条订单数据全部丢失,客户投诉直接找上门,最后只能手动补录数据,折腾了整整一下午。
两种实操方式,新手老手都能用
日常备份主要分可视化工具操作和脚本命令操作,按需选择即可,不用死磕一种方式。
新手优先用SSMS可视化备份,全程鼠标操作,零代码门槛。登录SQLServer管理工具,找到目标数据库,右键点击任务,选择备份选项,在弹窗里选好备份类型、存储路径,点击确定就能生成备份文件。适合临时手动备份、测试环境备份,不用记任何命令,上手就会。
运维老手更推荐脚本备份,稳定性更强,方便设置自动定时任务。核心备份命令十分简洁,完整备份、差异备份、日志备份都有专属语句,复制修改路径就能直接执行。搭配Windows定时任务,就能实现无人值守自动备份,不用每天手动操作,彻底避免遗漏。
靠谱的生产级备份方案
零散的单次备份没有意义,真正能兜底的是固定搭配的备份计划,适配绝大多数企业生产库:
- 完整备份:每周1次,周日凌晨2点执行,此时业务流量最低,几乎无性能影响
- 差异备份:每日1次,每晚凌晨3点执行,缩小单日数据变动备份体积
- 事务日志备份:工作日每20分钟1次,最大程度减少突发故障的数据丢失量
除此之外,一定要做好备份文件异地存储。很多人备份成功就万事大吉,结果服务器硬盘全盘损坏,本地备份文件跟着一起丢失,所有备份全部作废。
备份要轮转清理。
长期堆积备份文件会占满服务器存储空间,导致数据库卡顿、宕机。可以设置自动清理规则,保留最近30天的备份文件,过期文件自动删除,兼顾数据安全和服务器性能。
最后一定要定期做还原测试。备份的终极目的是恢复,从来不是留存文件。每周抽一次空闲时间,用最新备份文件做一次还原验证,确认备份文件完好可用,避免出现备份成功、还原失败的致命问题。