MPPDB集群高可用设计

目录

1. 前言

2. 内核端高可用设计

    2.1 GTM高可用

    2.2 CN高可用

    2.3 DN高可用

    2.3.1 主、备、从高可用设计

    2.3.2 数据复制

3. 集群管理端高可用设计

    3.1 CMserver高可用

    3.2 CMagent高可用


1. 前言

    MPPDB集群服务组件主要分为内核端和集群管理端,内核端主要包括GTM组件,CN组件和DN组件;集群管理端主要包括CMServer组件和CMagent组件。

2. 内核端高可用设计

    2.1 GTM高可用

    在MPPDB中,GTM在集群中只有一个实例,如果故障后,集群将无法使用,因此需要给GTM配置一个备机,主机故障后,备机可以接管服务。
    GTM主要负责分发xid和snapshot,由于xid要全局唯一,因此需要持久化到磁盘上,凡是需要持久化磁盘的都需要有备份,那么GTM主机在每将一次xid值写入到gtm.control文件中,就会和备机同步一次,备机写完后,主机再写。
    在同步过程中,主机业务线程只需给GTM备机发送一个消息包,GTM备机接收到消息后创建一个服务线程,并将事务xid写入本地文件,回复消息,主机的一次同步便完成。GTM在内存中xid每加2000时会向备机同步一次。
    如果GTM主机永久故障,GTM备机升主后,只需要重新初始化一个GTM实例出来然后和主机同步xid即可
 

    2.2 CN高可用

    通常一个集群中会部署多个CN,多个CN互为主备。如果一个CN故障,那么客户端可以使用其他CN。
    由于CN只存储元信息数据(即每张用户表数据分布在哪几个DN),因此只有DDL操作时才设计到CN存储数据,DML时CN并不需要写数据。在DDL操作时,接受业务的CN会把该SQL发送到所有其他CN与所有DN,通过两阶段提交来保证各个CN的数据一致性。这里也有一个设计缺陷,即当一个CN故障时,那么集群便无法操作DDL,此时只能手动从集群中删除该CN才能使用。
    如果集群中一个CN永久故障,那么需要重新初始化一个CN,然后使用gs_dump从另一个CN到处元数据再导入到该新CN上。
 

    2.3 DN高可用

    由于所有用户表数据通过sharding的方式存储在各个DN主上,各个DN数据完全没有分叉,如果主机故障后,那么数据将丢失,并无法提供服务,因此DN的高可用尤为重要,必须给DN主备配置一个或多个备机。
    MPPDB中的D
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值