技术原理
核心机制
由于gs_expand工具集成了物理扩容和逻辑扩容功能,因此图示中包含逻辑扩容相关内容。建议用户在物理扩容操作时避免数据库内出现bucket表与非bucket表混用情况。
性能指标
集群数据节点读带宽500MB/s、写带宽800MB/s,配置万兆网络。当每个DN独占磁盘、业务负载低峰且不做资源管控(资源管控级别为f,表内并发度8,扫描并发度4)时,单DN分片1TB数据翻倍扩容耗时如下:
- 普通表:3小时完成。
- hashbucket表:2小时完成(每批bucket数量1024,单次bucket上线最大1024)。
接口介绍
- gs_expand
gs_expand用于在业务规模扩展及数据量增长过程中,当集群性能与存储资源达到瓶颈时,通过新增主机节点提升集群整体处理能力和存储容量。
- 建议用户使用此接口完成扩容加节点和数据重分布操作。
- gs_redis_bucket
gs_redis_bucket用于对扩容加节点后的集群中hashbucket表执行数据重分布,主要由OM脚本调用执行。
- 不建议用户直接调用此接口,建议用户使用gs_expand工具完成数据重分布操作。
- gs_redis
gs_redis用于对扩容后的集群中非hashbucket表执行数据重分布,同样由OM脚本调用执行。
- 不建议用户直接调用此接口,建议用户使用gs_expand工具完成数据重分布操作。
- 系统函数
函数名称
说明
gs_redis_get_plan
获取完整的迁移计划。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。
gs_redis_get_bucket_statistics
获取日志流传输状态。只支持在扩容期间调用;只支持管理员权限用户查询。
gs_redis_set_distributed_db
设置当前正在hashbucket重分布的数据库。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
gs_redis_hashbucket_update_segment_header
更新当前数据库所有hashbucket表的header。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。
gs_redis_local_get_segment_header
获取段页式表header。只支持DN上调用。
gs_redis_local_update_segment_header
更新段页式表header。只支持DN上调用。
gs_redis_hashbucket_update_inverse_pointer
更新当前数据库所有hashbucket表本批次bucket的反向指针。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。
gs_redis_local_get_inverse_pointer
获取反向指针。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
gs_redis_local_update_inverse_pointer
记录并更新反向指针的Xlog。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
gs_redis_local_set_hashbucket_frozenxid
修改hashbucket表在系统表中的relfrozenxid64值。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
gs_redis_set_hashbucket_frozenxid
修改新DN节点hashbucket表在系统表中的relfrozenxid64值。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。
gs_redis_set_nextxid
修改DN节点next_xid值。只支持在扩容期间调用。只支持管理员权限用户查询;只支持DN上调用。
gs_redis_set_csn
修改DN节点next_csn值。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用;只支持在GTM_FREE模式下调用。
gs_redis_check_bucket_flush
查询RTO回放是否完成私有buffer的全量刷盘。只支持在扩容期间调用;只支持管理员权限用户查询。
gs_redis_get_flush_page_lsn
查询bucket扩容回放的刷页信息。暂不支持发布版本调用;只支持在扩容期间调用;只支持管理员权限用户查询。
gs_redis_show_bucketxid
查询指定bucket对应的bucketxid。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
gs_redis_drop_bucket_files
删除源节点已经物理搬迁的文件。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。
gs_redis_local_drop_bucket_files
删除对应的bucket list。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
gs_redis_local_drop_bucket_files
用于rangebucket表删除对应数据库的bucket list。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
gs_redis_get_undo_state
获取扩容重分布期间的Undo回滚状态。仅支持在扩容期间调用;仅支持管理员权限用户查询。
- 详细描述请参见《参考》中“SQL参考 > 函数和操作符 > 系统管理函数 > bucket系统函数”章节。
- 不建议用户直接调用以上系统函数接口,建议用户使用gs_expand工具完成扩容加节点和数据重分布操作。