分布式数据库中的常见故障及常用解决方案

常见的单机故障场景

  1. 数据库被杀导致页面没有完全写入磁盘
  2. 系统断电导致页面半写
  3. 磁盘损坏导致系统损坏

常见的集群故障场景

  1. 单机故障
  2. 单机网卡故障
  3. 机架断电
  4. 机架断网
  5. 数据中心过热

常用的故障修复手段

检测

  1. 大部分故障无需额外的检测手段,是显然的,比如系统宕机。但是在大规模系统中,为了减少运维开销,需要有集群管理系统,对整个集群状态进行监控和上报,包括cpu温度、网络状态、系统状态等等;
  2. 心跳检测机制,这是最常用的远程检测机器状态的方法;
  3. 页面或日志损坏,需要通过checksum机制来甄别;

应对方法

数据库被杀导致页面没有完全写入磁盘

需要日志重做机制来保证事务的一致性

系统断电导致页面半写

目前数据库系统采用double write或者full page write的方式处理这个故障

磁盘损坏导致系统损坏

这个故障需要区分损坏的内容是哪里:
1. 对于数据页损坏,往往需要通过离线备份来恢复数据,据说oracle支持从备份直接回复单页的功能,这可以大大提高修复的速度
2. 对于日志损坏,一般需要通过归档日志来恢复,或者预先采用日志多份写到多个磁盘的方式保证有正确的日志可用
3. 对于以上两种情况,单机热备都是可选的方式,如果主机损坏,可以使备机立刻升级为主机,然后再通过重建的方式使原来的主机变为备机

单机故障

数据重复存储

单机网卡故障

机架断电

机架断网

数据中心过热

你可能感兴趣的:(数据库理论,postgresql数据库)