一个机器挂多个磁盘的机器,怎么部署kv呢

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.1
请教下,这种一个机器挂多个磁盘的机器,怎么部署kv呢,是一个机器部署多个kv节点,根据不同的磁盘区分数据目录吗?

图里面的配置是48cpu , 384G内存,3.5Tnvme ssd独享本地盘4块

1、用numactl进行CPU,内存隔离(CPU:我的理解是有几个CPU(物理的),就是隔离几个)


2、磁盘就好办了,分区挂载不同的tikv存储节点

是,根据不同的磁盘区分数据目录
先根据文档 TiDB 环境与系统配置检查 | PingCAP 文档中心
将硬盘挂载在不同目录下,如/tidb-data /tidb-data1 /tidb-data2这样,然后tikv数据部署到不同目录里面
tikv配置需要配置内存使用上限 如storage.block-cache.capacity: 24G,实际使用大概是24G*1.3左右

参考我的3主机6tikv混合部署

global:
  user: "tidb"
  ssh_port: 22
  deploy_dir: "/tidb-deploy"
  data_dir: "/tidb-data"
  arch: "amd64"
server_configs:
 tidb:
   log.level: "error"
 tikv:
   storage.block-cache.capacity: 24G
 pd:
   replication.enable-placement-rules: true
   replication.location-labels: ["host"]
monitored:
  node_exporter_port: 9100
  blackbox_exporter_port: 9115
pd_servers:
  - host: 192.168.19.205
  - host: 192.168.19.206
  - host: 192.168.19.207
tidb_servers:
  - host: 192.168.19.205
  - host: 192.168.19.206
  - host: 192.168.19.207
tikv_servers:
  - host: 192.168.19.205
    port: 20160
    status_port: 20180
    data_dir: "/tidb-data/tikv-20160"
    config:
      server.labels: { host: "logic-host-1" }
  - host: 192.168.19.206
    port: 20160
    status_port: 20180
    data_dir: "/tidb-data/tikv-20160"
      #    deploy_dir: "/tidb-deploy"
      #    data_dir: "/tidb-data"
    config:
      server.labels: { host: "logic-host-2" }
  - host: 192.168.19.207
    port: 20160
    status_port: 20180
    data_dir: "/tidb-data/tikv-20160"
      #    deploy_dir: "/tidb-deploy"
      #    data_dir: "/tidb-data"
    config:
      server.labels: { host: "logic-host-3" }
  - host: 192.168.19.205
    port: 20161
    data_dir: "/tidb-data1/tikv-20161"
    status_port: 20181
      #    deploy_dir: "/tidb-deploy"
      #    data_dir: "/tidb-data1"
    config:
      server.labels: { host: "logic-host-1" }
  - host: 192.168.19.206
    port: 20161
    status_port: 20181
    data_dir: "/tidb-data1/tikv-20161"
      #    deploy_dir: "/tidb-deploy"
      #    data_dir: "/tidb-data1"
    config:
      server.labels: { host: "logic-host-2" }
  - host: 192.168.19.207
    port: 20161
    status_port: 20181
    data_dir: "/tidb-data1/tikv-20161"
      #    deploy_dir: "/tidb-deploy"
      #    data_dir: "/tidb-data1"
    config:
      server.labels: { host: "logic-host-3" }
monitoring_servers:
  - host: 192.168.19.205
grafana_servers:
  - host: 192.168.19.205

如果是多个cpu,可以用numactl绑定cpu的

3.5T的磁盘分区,就parted 方式分区

[root@db95_194 ~]# parted /dev/sdb
sdb sdb1
[root@db95_194 ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be
lost. Do you want to continue?
Yes/No? yes
(parted) mkpart primary 0% 100%
(parted) p
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 3651GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 3651GB 3651GB xfs primary

mount -a

数据库挂载参数:
vim /etc/fstab
/dev/nvme0n1 /ssddata xfs defaults,discard,noatime,nodiratime,nobarrier 0 0

以上是参考步骤,把3.5T的分区格式化成一个了,格式化多个,需要研究一下。

划分成4个tikv节点吧,numa绑定下

如果CPU只是两颗,只能绑定到两个吧?分别是0,1 是这样吧?4个tikv节点,两个tikv节点使用0号CPU,两个tikv使用1号CPU,是这样吧?

把96m的块调整512m 挂四个tikv

512m太大了,影响未来部署tilfash,256就行

嗯,尽量隔离下呗,注意每个tikv的block-cache.capacity参数设置为384G/40.45,默认会设置成384G0.45,这样容易oom

磁盘规格有点大。一般来说2T左右一个tikv就好。
你的cpu如果分成8个的话,又显得cpu少了。

分4个tikv的话,12c一个还可以吧,一个tikv一块nvme盘。

:upside_down_face: X86我建议直接关了numa,建一个tikv就够了


我的这个是设置64G,我这是混着用的,上面还有tiflash,用numa隔离CPU及内存的

资源不够,按这配置再来两三台,就得再来上百万预算

这个机器必须得再来至少2台。否则3副本放一个tikv上岂不是很危险。


我本来也想直接买这个12c 96G 单磁盘的,但是就怕cpu连16C都没到,怕是瓶颈

这个不算贵的,云上都是原价5折

帖子不错 很有实战的借鉴意义 法师们 施法 … :100: :100: :100:


如果按照节点进行隔离,我是不是直接用12C 96G 单盘3.5T 的更好呢,我之前看48cpu , 384G内存,4块3.5T的也是考虑在cpu和内存共享使用上是不是比拆分好的12C 96G 单盘3.5T好一点。

项目收益能否覆盖这个成本,不能就是亏本