单机多 tikv 实例隔离级别问题

请问,如果需要在一个主机上创建多个 tikv 实例,是否应该进行如下配置:
假设 3 台主机(h1 - 3),每台主机上 2 块盘
PD 配置:

location-labels = ["dc", "rack", "host"]
isolation-level = "host"

TiKV配置:

tikv_servers:
- host: 1.1.1.1
  port: 20160
  config:
    server.labels:
      dc: dc1
      rack: r1
      host: h1
- host: 1.1.1.1
  port: 21160
  config:
    server.labels:
      dc: dc1
      rack: r1
      host: h1
- host: 1.1.1.2
  port: 20160
  config:
    server.labels:
      dc: dc1
      rack: r2
      host: h2
- host: 1.1.1.1
  port: 21160
  config:
    server.labels:
      dc: dc1
      rack: r2
      host: h2
- host: 1.1.1.3
  port: 20160
  config:
    server.labels:
      dc: dc1
      rack: r3
      host: h3
- host: 1.1.1.3
  port: 21160
  config:
    server.labels:
      dc: dc1
      rack: r3
      host: h3

最好是配上,这样默认3副本的情况下,挂一台机器不会出现多副本丢失的情况

host 级别应该就是最严格的吧,保证每个 region 的副本不会出现在相同主机上

全看自己定义 不过一般出故障 大多数是就到单个服务器这一步了
假如能保证主机非常小的概率出故障,那就可以定义到实例级别 :face_with_peeking_eye:

如果您需要在一台主机上创建多个 TiKV 实例,您应该在 TiKV 配置文件中配置 server.labels 参数,以确保实例在可用主机上正确分布。

在您提供的示例中,假设您有三台主机,每台主机上有两个磁盘,您将按如下方式配置 TiKV 实例:

对于第一台主机 (h1),您将配置两个 TiKV 实例,每个实例具有不同的端口号(20160 和 21160)。 两个实例应具有相同的 dc 和 rack 标签,但主机标签不同(两种情况下均为 h1)。
对于第二台主机(h2),您还需要配置两个 TiKV 实例,每个实例具有不同的端口号(20160 和 21160)。 两个实例应具有相同的 dc 和 rack 标签,但主机标签不同(两种情况下均为 h2)。
对于第三台主机 (h3),您将配置两个 TiKV 实例,每个实例具有不同的端口号(20160 和 21160)。 两个实例应具有相同的 dc 和 rack 标签,但主机标签不同(两种情况下均为 h3)。
此配置确保每个 TiKV 实例都正确标记了其位置信息(dc、机架和主机),并且每个主机都有两个 TiKV 实例在不同的端口上运行。 PD 配置文件中的 isolation-level 参数也设置为“host”,这样可以保证每个 TiKV 实例都与其宿主机隔离,除非必要,否则不会与其他宿主机上的 TiKV 实例通信。

您的意思是需要按照如下的配置吗?

PD 配置:

location-labels = ["dc", "rack", "host"]
isolation-level = "host"

TiKV配置:

tikv_servers:
- host: 1.1.1.1
  port: 20160
  config:
    server.labels:
      dc: dc1
      rack: r1
      host: h1-1
- host: 1.1.1.1
  port: 21160
  config:
    server.labels:
      dc: dc1
      rack: r1
      host: h1-2
- host: 1.1.1.2
  port: 20160
  config:
    server.labels:
      dc: dc1
      rack: r2
      host: h2-1
- host: 1.1.1.1
  port: 21160
  config:
    server.labels:
      dc: dc1
      rack: r2
      host: h2-2
- host: 1.1.1.3
  port: 20160
  config:
    server.labels:
      dc: dc1
      rack: r3
      host: h3-1
- host: 1.1.1.3
  port: 21160
  config:
    server.labels:
      dc: dc1
      rack: r3
      host: h3-2

你原来的配置就是可以的。
这么改,如果是默认的3副本,挂一台机器可能会出现多副本丢失的情况

跨中心,跨机柜,跨服务器。 这种架构保证数据的绝对安全,实现 两地3中心的容灾机制, 甚至多中心,多地。
不考虑上面的情况, 标签根本不用。保证3台KV机器,即可

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