查看其它 3 个回答weibo的回答

weiboweibo副总北京象前行信息科技有限公司

来张比较流行的GP架构:

在分布式数据库中,无论是share-disk,share-memory,还是share-nothing的结构,数据库高可用性能主要实现方案都是通过节点冗余的方式,greenplum是采用share-nothing的MPP架构,其高可用也是通过给每个节点(master节点和所有的segment节点)设置一个冗余节点来实现的。

目前GP版本基于PG 9.6
Master 主节点冗余通过物理流复制实现
每个segment都有一个热备份(hot standby)称为segment mirror。
Master节点能够检测到primary segment的状态,当primary segment不能继续提供服务时,会主动激活mirror segment成为新的primary。正常情况下primary segment处于active状态,primary segment和mirror segment之间的数据同步是通过两种方式:

(1) 数据同步复制

primary segment上,在事务commit之前,把事务的commit log同步到mirror segment上,同步结束以后,primary segment才做真正的commit。这样当mirror segment被提升成primary后,能够保证事务的一致性。

(2) 物理文件复制

堆表使用物理文件复制。GP中表数据是由元组组成的一个固定大小的块文件存储在磁盘上,为了优化磁盘I/O,块文件会被存储到缓冲区,当缓冲区满了之后会被新更新的块文件替换,被替换出来的块文件被写到primary segment的磁盘上,同时通过网络复制到mirror segment上,Mirror segment只更新其文件副本中的相应块。当块保存在缓存中时,primary segment和mirror segment具有不同的块镜像,但是数据库仍然是一致的,因为事务日志已经被复制了。

详细内容可参考:
https://www.pgfans.cn/a?id=419

互联网服务 · 2020-04-13
浏览2847

回答者

weibo
副总北京象前行信息科技有限公司

weibo 最近回答过的问题

回答状态

  • 发布时间:2020-04-13
  • 关注会员:6 人
  • 回答浏览:2847
  • X社区推广