tidb的存储大小是怎么计算的,有点疑问,各位大哥大姐帮帮忙


比如这个图,默认是三副本,那实际上数据是只有13Tb吗?还是说是有39Tb的数据,
我搞了一个测试验证,mysql我造数据搞了24G数据,通过DM同步到tidb。然后每一个kv显示存了8G数据,总量是24G,就和我这个图39Tb一样,那到底是mysql24G数据到tidb这边压缩成了8G呢,还是24G数据平均分到每一个kv上面呢? 三个kv合起来24G才是全部数据呢?

几个副本啊

看官方文档不是默认3个副本吗?没有调整过任何参数

tidb如果三副本的话,大概容量和mysql是差不多的,因为本身tidb存储是经过压缩的,大概能压缩为mysql存储容量的1/3,但是又因为设置了3副本,所以容量就变成基本一样了。

1 个赞

如果真的是压缩到三分之一的话,那三个副本总容量和源数据容量一样的,就可以理解了。之前一直搞不明白,没看到说他有压缩的功能,那如果BR备份的话。有没有压缩呢?比如我举例的这个24G 三个副本每个8G,备份出来多少呢,应该是8G还是24G呢

8G,因为br备份时只备份leader的,也就是不论你是几副本,都只备份leader对应的那个副本

了解。谢谢了,leader,如果我扩容了,然后把这个leader的kv给缩容,他会自动转移吗? 还有pd的leader会自动转移吗 还是要手动输入个命令修改一下才能转移

leader分两种,例如pd的话假如你有三个节点,其中一个是leader,其他两个follower,其他两个其实只相当于leader的备份,是不能单独对外工作的,当然你也可以连接它对他做请求,但是他不是直接给你返回请求结果,是中转之后去请求了leader之后给你的返回。
tikv的leader不是针对节点的,而是针对region的,一个tikv上有无数个region,其中有些是leader,有些的follower,follower也是不对外提供服务的(未开启follower读的情况下),你需要查哪个region的数据,会先对pd请求,这个region的leader在哪个tikv节点上,然后再去对应的tikv上请求这个region的leader节点再返回。
扩容的情况,如果扩容是tikv,扩容之后,其他节点上的region的leader和follower就会均衡一部分到新的tikv节点上。
如果扩容的pd,扩容之后,leader是不会自动转移的,需要手工转移。只有你的leader节点挂掉了,才会转移到其他的follower节点上。

1 个赞

大哥牛逼,解释的很好。“如果扩容的pd,扩容之后,leader是不会自动转移的,需要手工转移。只有你的leader节点挂掉了,才会转移到其他的follower节点上。”
你这句话意思我能不能这么理解,比如我有KV3台,我扩容一台,我懒得去手工转移的话,可以直接吧有leader的KV那一台缩容掉,然后把它直接关机,。他会自动转移到其他follower节点上。不需要我再去手动操作吧

pd和tikv是不一样的。
你现在pd有三个,你其实可以直接干掉leader或者下线leader对应的pd,自然有其他的pd follower变成leader来承接请求。你后面再扩容一个pd,重新保证pd三节点就行。(其实1个pd也能正常提供服务,但生产环境建议还是三节点安全性更高)
但是如果你现在tikv有三个,而且是三副本的话,你想正常下线其中一个是不行的,因为需要保证region三副本,必须先扩容一个tikv节点,再下线其中一个节点才行。当然你突然挂掉一个tikv节点,集群也还能正常对外提供服务,因为多数派原则,三副本挂掉一个,剩下两个还是能用的,但是这种情况下是不安全的,需要尽快扩容tikv来让所有的region都补充为三副本。

1 个赞

了解。反正意思就是保证最少三副本嘛,如果不够其实也行,只不过存在一点风险。如果我测试库部署只搞一台kv服务器,他默认三副本,其实只有一个副本吧?除非在配置文件里面kv下面写上三个相同IO不同分区才是三个副本对吧。

你设置三副本,但是只有一个tikv节点应该起不来吧, 必须配置三个tikv节点才行,同一台服务器上也可以部署三个tikv,端口不一致即可。

同一个机器 端口分区不一致可以,我测试过。但是我第一次部署的时候只设置一个,官网他不是有个快速部署吗,kv只要一台,也没写多端口。参数文件我就直接写一台,起来了的。可以正常使用。

快速部署的副本默认是1副本啊,不是三副本。。。

他哪里有提示吗?是3副本还是1副本?我按照


这个方式一个kv地址照样启动成功。

安装默认是三副本用一下命令可以查看副本数 ./pd-ctl config show all |grep max-replicas

三副本单机部署只装一个tikv也起的来,单机跑性能挺好的

初始化就是3副本,你装成一副本也能正常用d
修改
set config pd replication.max-replicas=1;
查询
show config where NAME like ‘%max-replicas%’
;

1 个赞

你不是用tiup playground这样快速部署的?这样就是1副本。
正常你那样安装应该是三副本,但是只有一个tikv节点不应该能部署成功吧,你可以看下到底是几副本
show config where NAME like ‘%max-replicas%’


显示的是3副本,这个是测试的所有的服务都在一台机器上。tidb pd tikv

tiup cluster deploy tidb-test v7.1.1 ./topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]