关系型数据库通过复制、事务日志和自动故障转移机制来确保容错性。 通过在多个服务器上维护数据副本,它们可以防止单点故障。 例如,主副本设置允许备用服务器在主服务器发生故障时接管。 复制可以是同步的(确保零数据丢失,但会有延迟方面的权衡)或异步的(优先考虑性能,且停机时间最短)。 诸如 PostgreSQL 的流复制或 MySQL 的组复制之类的工具可以自动执行此过程,从而在发生中断期间实现无缝过渡。 这种冗余可确保即使在硬件故障或网络问题期间也能持续可用。
事务日志和 ACID 合规性(原子性、一致性、隔离性、持久性)进一步增强了容错性。 像 PostgreSQL 这样的数据库中的预写日志 (WAL) 会在将更改应用于主数据库之前将更改记录到日志文件中。 如果发生崩溃,数据库会使用此日志来恢复未提交的事务并恢复一致性。 ACID 的持久性方面保证已提交的事务通过将数据持久保存到非易失性存储中来在系统故障中幸存。 例如,SQL Server 的事务日志允许时间点恢复,即使在意外关闭或磁盘错误后也能确保数据完整性。
备份策略和存储冗余也发挥着关键作用。 定期的完整备份和增量备份,结合 pg_dump (PostgreSQL) 或 mysqldump (MySQL) 等工具,可以从灾难性故障中恢复。 基于云的数据库通常集成自动备份解决方案(例如,AWS RDS 快照)。 通过 RAID 配置或分布式文件系统(如 AWS EBS)实现的存储冗余可防止磁盘故障。 此外,诸如 SQL Server AlwaysOn 可用性组或 Oracle 实际应用集群 (RAC) 等集群解决方案可在节点故障期间分配工作负载并自动重新路由流量。 这些保护层可确保在大多数故障情况下最大限度地减少数据丢失和停机时间。