维护建议--数据库备份
经常会听到有人问"错误删除数据怎么办?",得到的回答一般都是"有备份么?有就还原备份,没有就准备简历",这看似笑话,却反应了数据库备份的重要性。
以下是本人积攒的以下备份相关建议,供新人学习和老鸟批斗:
- 定期进行数据备份(完备或差异备份)和日志备份。
- 使用压缩备份来减少磁盘空间占用和提高备份效率。
- 定期检查磁盘剩余空间和备份文件增长情况,以确保有足够空间进行下一次备份。
- 使用校验和(CHECKSUM)来检查数据完整性。
- 使用RESTORE VERIFYONLY来验证备份可用性。
- 根据数据变动情况决定完整备份和差异备份的频率。
- 根据日志生成速度来决定日志备份的频率。
- 优先使用脚本来备份数据库。
- 如果使用维护计划备份,请确认是否需要生成“报告和记录”。
- 定期检查日志文件大小和VLF数量。
- 定期清理msdb数据库中备份和还原记录。
- 在磁盘空间充足条件下,应在本地保留一份最新备份(最后一次完备及之后备份文件)。
- 定期复制数据库备份至其他服务器,并定期检查异地备份。
- 在备用服务器上还原数据库以测试备份可用性,并运行DBCC CHECKDB来检查数据完整性。
- 定期归档历史数据,条件允许情况下,应将历史数据归档到专门存放历史记录的数据库。
- 除有特殊需求修改数据库恢复模式外,应保证数据库运行在完整恢复模式下。
- 当数据库从简单恢复模式切换到完整恢复模式下,应立即完整备份或差异备份来修复断裂的日志链。
- 当数据库从大日志恢复模式切换到完整恢复模式下,应立即日志备份,以保证此后可按照时间点还原。
- 在做任何可能存在风险的操作前,请确保先确保备份有效。
- 维护一个列表,记录数据库进行备份的频率、路径以及异地备份的路径等信息,以便故障时能第一时间找到备份。
--===================================================================
关于数据库备份,很多公司或伪DBA对数据库备份的相关知识了解不足,存在很多误区,也因此有了很多差异饭后的谈资(某某公司的数据库挂啦,丢失好几天数据,哇哈哈)。
以下罗列一些错误的操作,以博君一笑:
1. 周期性做日志收缩操作,却没有定期日志备份(做下日志备份会死吗?)
2. 数据库运行太慢,切换到简单恢复模式貌似快了很多(谁说的简单恢复模式快的?)
3. 在数个月前做过完整备份,然后一直只做日志备份(这不是很悲催哈,顶多还原慢点嘛)
4. 不小心把仅有的完备给删除掉了,空有一堆日志备份(菊花残,满地伤啊)
5. 只管日志备份,而不测试备份可用性(很多人中枪没,等还原时才发现备份文件有问题,瞬间知道刷简历的重要性)
6. 没有异地备份或不检查异地备份(书到用时方很少啊,只有故障时才知道备份好啊)
7. 按照"国际标准"来做备份测量,不考虑数据变化情况(比如一周一次完备,每天一次差异备,然后周而就发现差异备和完备差不多大了,WHO care?)
8. 要做索引维护,偷偷摸摸把恢复模式修改为简单,却悲催地发现这期间有人误操作(RP问题,不解释)
--====================================================================
备份相关:
宋大师的误区三十问之备份:http://www.cnblogs.com/CareySon/archive/2013/02/20/2918238.html
MSDN之备份基础:http://technet.microsoft.com/zh-cn/LIBRARY/ms187048.aspx
日志查看软件1:Log Explorer for SQL Server
日志查看软件2:ApexSQL Log
未完待续。。。
--====================================================================
关于备份的一些知识和脚本,我不得不推荐下这个变态DBA:听风吹雨,请猛戳。
听风桑,你备份这么风骚,你媳妇知道么?
--====================================================================
妹子骚猴就来