当前位置:首页|资讯

PostgreSQL 故障恢复概述

作者:david007Bili发布时间:2024-10-10

        数据库系统的运行依赖于硬件环境、操作系统以及数据库系统自身。在其运行过程中,可能会遭遇诸多故障场景,诸如磁盘故障、电源故障、软件错误、机房失火、网络故障,甚至是人为破坏。同时,数据库还可能存在用户的错误操作。

        一旦有任何故障发生,就可能出现信息丢失、数据不一致以及数据损坏的情况。因此,数据库恢复系统是数据库系统不可或缺的组成部分,其职责是将数据库恢复至故障发生前的一致状态,即保障数据库的可恢复性。

          支持可恢复性的基础技术是日志,它以安全的方式记录了数据库变更的历史,对于 PostgreSQL 而言,即 WAL。故障恢复就是借助日志重建对数据库的所有更新过程,以实现数据的一致性状态。

         故障恢复的第二个关键方面在于避免追溯久远的日志,以防恢复时间过长,影响系统的可用性。对于 PostgreSQL 来说,这便是检查点技术,通过此技术会定期保存数据库的一个近期一致性状态,从而减少必须检查的日志长度。

         故障恢复的第三个重要方面是 “备份”,它使得数据库不仅能从暂时的系统故障中恢复,还能在整个数据库丢失的情况下得以恢复。对于 PostgreSQL 而言,即基础备份、日志归档技术。

         故障恢复的第四个重要方面是基于 WAL 日志的故障恢复技术,PostgreSQL 采用 PITR 技术,即基于时间点的恢复技术。

        对于数据库而言,各种不同类型的数据通过不同的存储介质进行存储和访问。存储介质对数据库的设计、性能和完整性具有重要影响。在此,我们对存储器类型予以介绍。

        易失性存储器:易失性存储器中的信息通常在系统崩溃后会全部丢失。此类存储器包括主存储器(内存)和高速缓冲存储器。

        非易失性存储器:在系统崩溃后数据不会丢失,这种存储器主要是磁盘存储器。该存储器无数据冗余,偶尔会因局部故障、磁头损坏等硬件故障而导致数据丢失。

          稳定性存储器:稳定性存储器中的信息几乎永远不会丢失(当然这是相对概念)。一般指独立磁盘冗余阵列(RAID),即通过多个独立的磁盘组成一个大的磁盘阵列,从而构建数据丢失的故障安全机制。

         分布式存储器:属于稳定性存储器,即将数据分散存储到多个存储服务器上,并将这些分散的存储资源组成一个虚拟的存储设备。与传统的存储架构使用 RAID 模式来保证数据的可靠性不同,分布式存储采用了多副本备份机制,将对业务的影响降至最低。

        数据库系统可能发生的故障种类多样,每种故障需要不同的处理方法。

        事务故障:事务由于非法输入、找不到数据、溢出或者超出资源限制等内部条件而无法正常执行,或者系统进入不良状态(死锁)而无法正常运行。通常,这类故障不会致使数据库系统整体出现问题,其影响范围仅局限于本次事务的执行。可以通过事务的 ACID 技术来保证数据的一致性。

        系统故障:由于硬件、数据库软件或者操作系统的问题,导致内存内容丢失,系统停止运行。该问题不影响磁盘数据。例如:机房断电、系统重启、软件错误。可以通过基础备份、增量备份、备份归档以及基于 WAL 日志的 PITR 技术来规避这类问题的影响,这也是本系列文章重点介绍的内容。

        磁盘局部故障:在数据传送操作过程中,由于磁盘损坏致使小部分磁盘块上的内容丢失。可以通过 RAID 等技术来防范这类问题。

        灾难性故障:这类故障涵盖容纳数据库的介质完全损毁。例如地震、火灾等会将磁盘彻底毁坏。此时,就需要借助远程备份(主备复制)、分布式存储、异地容灾架构(在主备的基础上考虑网络性能)等来防范这类问题。

        基础备份 / 增量备份 / 备份归档方案只能定期或者事件触发归档,无法实时地将产生的 WAL 日志转移至其他地方,在最后一次归档以后产生的更新可能在灾难中丢失,因而无法做到绝对安全。

        更安全的方案是 WAL 日志不仅存储在本地稳定存储器中,同时通过网络写入远程存储器中,也就是主备复制方案。

          另一种更安全的方案是将 WAL 日志的安全性下推到分布式存储器层解决,由分布式存储系统保障磁盘损坏的风险,即存算分离方案。

         PostgreSQL 故障恢复主要基于 ARIES 方法实现,以表空间、WAL 日志为核心,通过构建脏页表、模糊检查点等技术简化了 WAL 日志的实现逻辑,降低了故障恢复时间,减少了检查点开销,提高了故障恢复效率。后续将从 WAL 文件格式、WAL 落盘逻辑、WAL 回放技术、检查点技术、全量与增量备份、PITR 恢复技术等多个方面详细介绍 PG 故障恢复的逻辑。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1