灾难(Disaster)指由于人为或自然因素,造成一个数据中心内的信息系统发生严重故障或瘫痪,使系统支持的业务功能中断,通常导致业务系统需要切换到备用中心运行。
灾难恢复(Disaster Recovery)指当灾难破坏生产中心时,在不同地点的数据中心内恢复数据、应用或者业务的能力。
冗余备份,就是准备一份或多份数据备份或者软硬件服务,以备不时之需。例如冗余备份服务器,就是2台服务器互为备份,一台服务器故障了,另一台服务器立刻接替。
数据级容灾指通过建立异地容灾中心,实现数据的远程备份。在灾难发生之后,要确保原有的数据不会丢失或者遭到破坏。在数据级容灾方式下,建立的异地容灾中心可以简单地理解成一个远程的数据备份中心。数据级容灾的恢复时间比较长,但是相比其他容灾级别来讲,它的费用比较低,而且构建实施也相对简单。在本地数据及整个应用系统出现灾难时,系统至少在异地保存一份可用的关键业务数据。该数据可以是本地数据的完全实时副本,也可以比本地数据略微落后,但一定是可用的。采用的主要技术是数据备份和数据复制。容灾备份是通过在异地建立和维护一个备份存储系统,利用地理上的分离来保证系统和数据对灾难性事件的抵御能力。
设计一个容灾备份系统需要考虑多方面的因素,如备份或恢复数据量大小、应用数据中心和备援数据中心之间的距离和数据传输方式、灾难发生时要求的恢复速度、备援数据中心的管理及投入资金等。
通常可将容灾备份分为4个等级。
这一级容灾备份,实际上没有灾难恢复能力,它只在本地进行数据备份,并且被备份的数据只在本地保存,没有送往异地。
在本地将关键数据备份,然后送到异地保存。当灾难发生后,按预定数据恢复程序进行恢复。这种方案成本低、易于配置。但当数据量增大时,存在存储介质难以管理的问题;并且当灾难发生时,存在大量数据难以及时恢复的问题。为了解决这些问题,当灾难发生时,可先恢复关键数据,后恢复非关键数据。
在异地建立一个热备份站点,通过网络进行数据备份。也就是通过网络以同步或异步方式,把主站点的数据备份到备份站点。备份站点一般只备份数据,不承担业务。当出现灾难时,备份站点接替主站点的业务,从而维护业务运行的连续性。
在相隔较远的地方分别建立两个数据中心,它们都处于工作状态,并相互进行数据备份。当某个数据中心发生灾难时,另一个数据中心接替其工作任务。这种级别的备份根据实际要求和投入资金的多少又可分为两种:两个数据中心之间只限于关键数据的相互备份;两个数据中心之间互为镜像,即零数据丢失等。
零数据丢失是目前要求最高的一种容灾备份方式,它要求不管发生什么灾难,系统都能保证数据的安全。所以,它需要配置复杂的管理软件和专用的硬件设备,相对而言投资是最高的,但恢复速度也是最快的。
repmgr是一个开源工具套件,用于管理PostgreSQL服务器集群中的复制和故障转移。它用来增强 PostgreSQL 的内置热备份功能,以设置备用服务器、监控复制及执行管理任务,例如故障转移或手动切换操作。
repmgr是2010年由2ndQuadrant公司推出的PostgreSQL故障切换工具。
repmgr帮助系统管理员管理PostgreSQL数据库集群。
Patroni是一个定制化高可用解决方案,其配置信息存储在ZooKeeper、etcd或Consul等中。它为数据库管理员提供开箱即用的快速部署高可用PostgreSQL方案。
多主复制意味着有多个节点充当主节点。数据在节点之间复制,插入和更新可以在一组主节点上执行。数据有多个副本,系统负责解决多主并发之间发生的任何冲突。
使用多主复制主要有两个原因:一是高可用性,二是性能。在大多数情况下,有些节点专用于密集的写操作,而有些节点专用于读操作或故障转移。
PostgreSQL内置了单主复制功能,但遗憾的是,在PostgreSQL主分支中并没有多主复制功能。
目前 PostgreSQL 有一些多主复制解决方案可用,其中一些由应用程序端实现,而另外一些由基于 PostgreSQL 的分支版本实现,其主要由一家商业公司管理,但并非由PostgreSQL主线社区管理。
常用的 PostgreSQL 多主复制解决方案如下:BDR (Bi-Directional Replication)、PostgreSQL-XL、PostgreSQL-XC、Rubyrep和Bucardo。