腾讯云:TBase数据节点在线扩容原理解析

时间:2021-07-15 | 标签: | 作者:Q8 | 来源:腾讯云数据库 TencentDB网络

小提示:您能找到这篇{腾讯云:TBase数据节点在线扩容原理解析}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的腾讯云:TBase数据节点在线扩容原理解析内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

< ">对于Share-Nothing架构的分布式数据库来说,如何将数据均匀的分布到各个节点、在线扩容,以获取更大的存储容量和更从危机公关说海底捞事件高的并药品海报宣传发访问量,成为各大分布式数据库系统的一大挑战,今天我将对腾讯云数据库TBase的数据节点在线扩容方案做一个简单的分享。

< ">为了迎接业务的快速增长,系统不可避免的需要进行扩容,传统的分布式数据库所采用hash(row)%nofdn,也就是说先对分布列计算hash值,然后使用这个值对节点个数取模来决定row存储在哪个节点。这里有一个致命的问题,扩容后节点数会变多,数据分布的计算逻辑会导致已经存在的数据无法正常访问。为解决这个问题,传统的分布式数据库必须把业务停掉,把所有数据导出,扩容后重新导入,在数据量较多时,这个过程可能会持续几天,这对于7*24小时的交易系统来说显然是不能接受的。为了解决这个问题,TBase引入了一种新的分表方案:sharded table。

< ">TBase的数据分布采用如下的方式:



< ">1.引入一个中间层shard map,shard map中存储每一项shardid【通过hash(key)计算,key表示分布式键值】和DN的映射关系。

< ">2.分布式表中的每条记录通过hash(key)%#shardmap来决定记录存储到哪个数据节点。

< ">3.每个数据节点上存储分配到本节点的shardid信息,进而进行可见性判断。

< ">如下图所示,当hash(key)=1时,此行数据会存放在DN001数据节点,当hash(key)=2时,此行数据存储在DN002数据节点上,以此类推。

< ">这样做有什么好处呢?比如我们向default_group中新增加节点时,我们只需要把一些shardmap中的id映射到新加的节点,并把对应的数据迁移过去就可以了。

< ">如下图所示,向default_group中新增数据节点DN003,那么只需要把DN001中的shardid=1和DN002中的shardid=4的数据迁移到DN003中,就可以实现数据的重新分布,并达到节点间数据平衡。

< ">TBase的在线扩容过程:



< ">1.选择要迁移到新添加数据节点的shardid。

< ">2.通过shardid找到要迁移的数据,采取存量+增量的方式把数据迁移到新的数据节点。

< ">3.当新节点中的数据和数据源的数据达到一致时,切换协调节点(CN)中的shardmap信息,把shardid=3,shardid=4映射到DN003中(shardmap切换时数据库集群处于只读状态,该操作会在秒级完成)。



< ">4.数据清理,释放空间。如上图所示,清理DN001中shardid=3和DN002中shar危机公关的相关研究did=4的数据。

腾讯云:TBase数据节点在线扩容原理解析

上一篇:Payoneer:如何使用账户“两步验证“功能
下一篇:Payoneer:如何通过店商店经理店铺管家连接我的亚


版权声明:以上主题为“腾讯云:TBase数据节点在线扩容原理解析"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
推荐内容
扫码咨询
    腾讯云:TBase数据节点在线扩容原理解析
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“腾讯云:TBase数据节点在线扩容原理解析”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通腾讯云:TBase数据节点在线扩容原理解析的相关事宜。

关键词:腾讯云:TBase数据节点在线

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:sales@1330.com.cn
电话:400-021-1330 | 客服QQ:865612759
沪ICP备12034177号 | 沪公网安备31010702002418号