有没有双集群做灾备的解决方案???最好...
 
通知
清除全部

有没有双集群做灾备的解决方案???最好同城双数据中心的架构


gaoj
帖子: 5
 gaoj
Topic starter
青梅新星
已加入: 3年 前

gp6.9.0商业版,计划在现有gp集群的基础上,再部署一个同构的gp集群做灾备,做成同城双数据中心的形式。

我在官档上只搜到一小段“ Dual Clusters ”话,并没有具体的解决方案……

不过从官档可以看出有两种方式,一种是同步的ETL,一种是异步的备份恢复。就是不知道使用什么技术来实现, ???? 

求助各位大神,不管同步还是异步的先来个可行的灾备方案就行!要不工作推进不了 ???? 

1 Reply
water32
帖子: 8
Greenplum专家
青梅新星
已加入: 3年 前

目前,最新的Release版本为GP6版本,并没有产品级别实现容灾功能,所以,目前都是变相的来实现灾备方案。

文档中提到的双集群方案,一个是双ETL方案,另一个是备份恢复方案,两个都是很难落地的。

首先,双ETL方案不能保证两个集群的数据一致性,因为同一份数据也不能保证同一个SQL两次执行的结果完全相同,这取决于多方面的因素,比如,随机数,时间戳,排序问题。甚至,缺省的事务隔离级别本身就不能保证得到可串行化结果(缺省为读已提交隔离级别,GP中未实现可串行化隔离级别,而是退化到可重复读隔离级别),也就是说,除非两个集群都按照一条一条串行的方式执行所有的SQL,否则,理论上来说,只要有并发访问同一份数据,就无法保证结果一致性。

其次是备份恢复,这个方案是可以保证数据的一致性的,毕竟备集群不会主动产生数据,只是将主集群备份的数据进行恢复。该方案的缺点是,其必须建立在备份的基础之上,而且即便gpbackup,目前还不支持只针对增量备份的恢复,如果每天进行一次全量恢复,从效率的角度来说,往往是难以接受的。

所以,到目前为止,几乎鲜有见到落地上述两种方案的案例,双ETL方案的确有用户在使用,需要辅助以定期的数据比对来解决可能出现的数据一致性问题,对于大规模的生产集群来说,进行记录数的比对是比较容易的,但是要进行数据内容的比对是极其困难的,且代价极大,即便是计算类似checksum的方法也耗时很久,不是很实用。

目前有用户在使用的灾备方案是这样的,通过原厂售后专业支持团队提供的脚本命令,可以实现两个集群之间的增量数据同步,这里所谓的增量,类似gpbackup等备份命令的增量概念,即,只要表中数据在上次同步之后,发生过变化,就重新同步该表,可以识别到叶子分区,因为叶子分区其实就是一张普通的物理表。同时,增强了对heap表的变化识别,即,heap表如果没有发生过变化,增量同步将不会重新同步该表。

回复
Close Bitnami banner