首页 > 图灵资讯 > 技术篇>正文
数据库丢失原因|为什么数据库会丢失数据?
2021-11-05 09:31:59
目前,数据库管理系统已成为软件的重要部分,开源MySQL、PostgreSQL和商业Oracle等数据库已遍地开花,它们几乎都需要依靠数据库管理系统来存储数据。但在使用数据库的过程中很可能会丢失,那么,数据库为什么会丢失呢?
资料库不会丢失资料,这听起来是理所当然的,持久性应该是资料库的最基本保障,但想要确保资料不丢失就很难了。如今,我们可以发现两个原因,即数据库问题而导致数据丢失:
人为错误:
人为误差是数据丢失的最主要原因。就腾讯云数据丢失事件而言,尽管这起事故的原因是硬件故障,但最终导致数据完整性的损害还是运营人员的不正当操作。
一是正常的数据迁移流程默认打开数据校验,打开后可有效地发现和规避源端数据异常,保证迁移数据的正确性,但由于数据的迁移不规范,导致数据的迁移不规范;
二是正常数据迁移完成后,源仓库数据应保留24小时,以便在异常情况下恢复数据,但运营人员为尽快减少仓库使用率,在来源仓库中非法回收数据。
降低人为错误的最佳方法是标准化操作,例如数据备份和维护,以及使用涉及数据安全的自动化操作来处理,这会降低人工干预带来的风险。
对软件工程师来说,我们应该敬畏生产环境,在生产环境中谨慎行事,要意识到所有的动作可能会对在线上运行的服务产生影响,从而减少出现类似问题的可能性。
硬件错误:
关于基础服务为何不能很好地使用一篇文章,我们曾经说过,任何一条线能正常工作是非常偶然的,只要时间足够长,我们就无法保证100%的可用性。一种硬件,如磁盘,如果用得够久,很有可能会被破坏,根据Google论文提供的数据,硬盘的年平均失效率(AnnualizedFailureRates,AFR)为8.6%。
由于磁盘静默错误(Silentdatacorruption)引起2018年腾讯云数据损坏事故的原因是单一拷贝数据错误。磁碟无提示错误是磁盘固件或主机操作系统未发现的错误,包括:电缆松动、供电不可靠、外部震动、网络导致的数据丢失等。
正因为磁盘上的数据损坏很普遍,我们需要一种确保磁盘在出现不可修复的读错误(UnrecoverableReadError)时可以恢复磁盘数据。单独的冗余磁盘阵列(RedundantArrayofIndependentDisks,RAID)是一种数据存储虚拟化技术,能够将多个物理磁盘合并到一个逻辑磁盘上,从而可以增加数据冗余并改善性能。
当出现意外丢失数据时,其影响将十分巨大,我们在用数据库存储核心业务数据时也不能完全信任数据库的稳定性,可以考虑采用热备份和快照等方式容灾。
图灵学院成立于2017年7月15日,现阶段提供 计算机基础原理、JavaSE核心、Java后端、 面试必备算法、python核心编程、数据分析、web 开发题、人工智能等专题课程,为想学习Python的学员提供优质的培训服务,帮助学员掌握更加全面的技能,是计算机人员职场中提职加薪的首选。
免费java架构师视频学习地址:免费视频
资料库不会丢失资料,这听起来是理所当然的,持久性应该是资料库的最基本保障,但想要确保资料不丢失就很难了。如今,我们可以发现两个原因,即数据库问题而导致数据丢失:
人为错误:
人为误差是数据丢失的最主要原因。就腾讯云数据丢失事件而言,尽管这起事故的原因是硬件故障,但最终导致数据完整性的损害还是运营人员的不正当操作。
一是正常的数据迁移流程默认打开数据校验,打开后可有效地发现和规避源端数据异常,保证迁移数据的正确性,但由于数据的迁移不规范,导致数据的迁移不规范;
二是正常数据迁移完成后,源仓库数据应保留24小时,以便在异常情况下恢复数据,但运营人员为尽快减少仓库使用率,在来源仓库中非法回收数据。
降低人为错误的最佳方法是标准化操作,例如数据备份和维护,以及使用涉及数据安全的自动化操作来处理,这会降低人工干预带来的风险。
对软件工程师来说,我们应该敬畏生产环境,在生产环境中谨慎行事,要意识到所有的动作可能会对在线上运行的服务产生影响,从而减少出现类似问题的可能性。
硬件错误:
关于基础服务为何不能很好地使用一篇文章,我们曾经说过,任何一条线能正常工作是非常偶然的,只要时间足够长,我们就无法保证100%的可用性。一种硬件,如磁盘,如果用得够久,很有可能会被破坏,根据Google论文提供的数据,硬盘的年平均失效率(AnnualizedFailureRates,AFR)为8.6%。
由于磁盘静默错误(Silentdatacorruption)引起2018年腾讯云数据损坏事故的原因是单一拷贝数据错误。磁碟无提示错误是磁盘固件或主机操作系统未发现的错误,包括:电缆松动、供电不可靠、外部震动、网络导致的数据丢失等。
正因为磁盘上的数据损坏很普遍,我们需要一种确保磁盘在出现不可修复的读错误(UnrecoverableReadError)时可以恢复磁盘数据。单独的冗余磁盘阵列(RedundantArrayofIndependentDisks,RAID)是一种数据存储虚拟化技术,能够将多个物理磁盘合并到一个逻辑磁盘上,从而可以增加数据冗余并改善性能。
当出现意外丢失数据时,其影响将十分巨大,我们在用数据库存储核心业务数据时也不能完全信任数据库的稳定性,可以考虑采用热备份和快照等方式容灾。
图灵学院成立于2017年7月15日,现阶段提供 计算机基础原理、JavaSE核心、Java后端、 面试必备算法、python核心编程、数据分析、web 开发题、人工智能等专题课程,为想学习Python的学员提供优质的培训服务,帮助学员掌握更加全面的技能,是计算机人员职场中提职加薪的首选。
免费java架构师视频学习地址:免费视频