GaussDB关键技术原理:高弹性之hashbucket扩容
GaussDB关键技术原理:高弹性之hashbucket扩容
基于hashbucket表的扩容
整体流程主要包含三个步骤:
基线数据搬迁:生成扩容搬迁计划,根据搬迁计划中对涉及的库中的bucket文件进行跨节点文件搬迁。包含库级别的数据文件和实例级别的事务日志。
bucket日志流追增:识别bucket扩容过程中的增量修改,将对应的日志发送到目的节点并在目的端进行增量修改的日志回放。
bucket元数据切换:当bucket日志流追增完成后,原节点和目的节点的bucket数据达到一致状态,可以对原节点的bucket进行下线删除,对目的节点的bucket进行上线操作,同时修改CN上的bucket map映射使新的业务能够路由到正确的DN节点。
如下图1所示以DN节点2扩3为例描述hashbucket扩容的详细流程:
(1) CN从扩容工具测处收到MOVE BUCKETS搬迁命令;
(2) CN解析后分别给DN1、DN2、DN3(目标DN)下发搬迁命令;
(3) DN1/DN2将迁移bucket目录(包含数据及事务日志)拷贝到目标DN3上;
(4) DN3收到命令后,进入receiver逻辑,与DN1/DN2建立连接,DN1/DN2进入sender逻辑,将相关bucket的日志解析出来发送给DN3;
(5) bucket目录拷贝完成后,DN3回放收到的bucket日志,进行追增;
(6) 完成最后一轮的追增后CN上切换bucket group,DN1/DN2上的旧bucket进行清除。