tikv 底层存储,磁盘的问题

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v3.0.9

  • 【问题描述】:你好,我们目前的tidb 集群是3个tikv server 。我们现在遇到一个磁盘扩容和IO的问题。

问题一:我们现在的磁盘是1块2T的raid 0 。考虑到后期数据增长超过2T的数据,我们要扩容,后期继续加一块或者多块盘,数据是否可以支持多块盘存储?不行的话磁盘扩容怎么扩容呢?

问题二:关于IO 的问题,io达到瓶颈的话,我在tikv 服务器上增加一块或者多块盘,是否可以缓解,如果无法解决,你们有没有什么方案推荐。

还有一个关于raid,你们是怎么建议呢?

2 个赞
  1. 现有 Riad 0 没有问题;
  2. 不建议通过加盘方式扩容,TiKV 目前最佳性能应该在 SSD 在 1.5 TB - 2 TB,如果容量扩容,建议采用 TiKV 扩容方式增加 TiKV 节点,这样存储和计算性能都会有提升;
  3. 有一定缓解,但是这个不是主要的,主要是还是扩容 tikv 实例个数。比如部署单机多实例。
1 个赞

单机多实例的数据是存同样的数据还是不一样的数据?数据是怎么冗余的呢?

多实例的话你们是建议单机多实例用多块盘组成多个实例? 还是单机一块盘(多磁盘组成)多实例?

使用 Label 保证副本不再多一个节点出现多副本情况。
https://pingcap.com/docs-cn/stable/how-to/deploy/geographic-redundancy/overview/#两地三中心部署方案

单实例单块盘,不会因为底层盘是 shared ,影响其他的 I/O 性能

比如 3台 tikv server ,我扩容到6个tikv 实例,是6个副本集嘛?

不是的,TiDB 默认是 3 副本,另外扩容 TiKV 成单机多实例,还要确认 CPU、Memory 资源是否达标,如果太小,仅扩容磁盘还是会有写入瓶颈。建议先学习一下 PU 视频,里面有详细的讲解。 https://university.pingcap.com/dba-lesson/?course_slug=PCTA&chapter_slug=概述&lesson_slug=TiDB-架构原理

在哪里修改副本集呢?

我现在有3个副本集,如果我没有配置Label 或者配置不当的话,会不会出现3所有数据都存在一个副本集上的可能?

PD Control 可以修改,具体看一下官方文档。

单机单实例场景不会出现一个实例存在多副本的情况

那我三个tikv 服务器上 每台服务器都配置2个tikv 实例,这样的情况会不会出现数据存储偏移呢?

每台服务器上的 2 个 tikv 实例配置好 label 后,不会出现相同副本调度到一台服务器上的情况。pd 调度会按照每个服务器的磁盘空间和 region 大小进行调度,确保每个服务器上存储的数据尽可能均衡。

由于 3 副本的 Raft Group 只能容忍 1 副本故障,当集群被扩容到 N 个 TiKV 实例时,这个集群依然只能容忍一个 TiKV 实例的故障。2 个 TiKV 实例的故障可能会导致某些 Region 丢失多个副本,整个集群的数据也不再完整,访问到这些 Region 上的数据的 SQL 请求将会失败。而 N 个 TiKV 实例中同时有两个发生故障的概率是远远高于 3 个 TiKV 中同时有两个发生故障的概率的,也就是说 Multi-Raft 系统集群扩容 TiKV 实例越多,其可用性是逐渐降低的。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。