TiFlash 配置参数
可通过 pd-ctl 调整参数。如果你使用 TiUP 部署,可以用 代替 pd-ctl -u <pd_ip:pd_port>
命令。
:用来控制 replica 相关 operator 的产生速度(涉及到下线、补副本的操作都与该参数有关)
store-balance-rate
:用于限制每个 TiKV store 或 TiFlash store 的 Region 调度速度。注意这个参数只对新加入集群的 store 有效,如果想立刻生效请用下面的方式。- 使用
pd-ctl -u <pd_ip:pd_port> store limit <store_id> <value>
命令单独设置某个 store 的 Region 调度速度。(store_id
可通过pd-ctl -u <pd_ip:pd_port> store
命令获得)如果没有单独设置,则继承store-balance-rate
的设置。你也可以使用pd-ctl -u <pd_ip:pd_port> store limit
命令查看当前设置值。
- 使用
replication.location-labels
:用来表示 TiKV 实例的拓扑关系,其中 key 的顺序代表了不同标签的层次关系。在 TiFlash 开启的情况下需要使用 来设置默认值,详细可参考 geo-distributed-deployment-topology。
TiFlash 配置参数
[server]
engine-addr = 外部访问 TiFlash coprocessor 服务的地址
## 控制处理 snapshot 的线程数,默认为 2。设为 0 则关闭多线程优化
snap-handle-pool-size = 2
## 控制 raft store 持久化 WAL 的最小间隔。通过适当增大延迟以减少 IOPS 占用,默认为 4ms,设为 0ms 则关闭该优化。
store-batch-retry-recv-timeout = "4ms"
除以上几项外,其余功能参数和 TiKV 的配置相同。需要注意的是:tiflash.toml [flash.proxy]
中的配置项会覆盖 tiflash-learner.toml
中的重合参数;key
为 engine
的 label
是保留项,不可手动配置。
TiFlash 支持单节点多盘部署。如果你的部署节点上有多块硬盘,可以通过以下的方式配置参数,提高节点的硬盘 I/O 利用率。TiUP 中参数配置格式参照详细 TiFlash 配置模版。
TiDB 集群版本低于 v4.0.9
TiDB v4.0.9 之前的版本中,TiFlash 只支持将存储引擎中的主要数据分布在多盘上。通过 path
(TiUP 中为 data_dir
)和 path_realtime_mode
这两个参数配置多盘部署。
如果节点上有多块相同规格的硬盘,可以把 path_realtime_mode
参数留空(或者把该值明确地设为 )。这表示数据会在所有的存储目录之间进行均衡。但由于最新的数据仍然只会被写入到第一个目录,因此该目录所在的硬盘会较其他硬盘繁忙。
如果节点上有多块规格不一致的硬盘,推荐把 path_relatime_mode
参数设置为 true
,并且把性能最好的硬盘目录放在 path
参数内的最前面。这表示第一个目录只会存放最新数据,较旧的数据会在其他目录之间进行均衡。注意此情况下,第一个目录规划的容量大小需要占总容量的约 10%。
TiDB 集群版本为 v4.0.9 及以上
TiDB v4.0.9 及之后的版本中,TiFlash 支持将存储引擎的主要数据和新数据都分布在多盘上。多盘部署时,推荐使用 [storage]
中的参数,以更好地利用节点的 I/O 性能。但 TiFlash 仍然支持 中的参数。
如果节点上有多块相同规格的硬盘,推荐把硬盘目录填到 storage.main.dir
列表中,storage.latest.dir
列表留空。TiFlash 会在所有存储目录之间分摊 I/O 压力以及进行数据均衡。
如果节点上有多块规格不同的硬盘,推荐把 I/O 性能较好的硬盘目录配置在 storage.latest.dir
中,把 I/O 性能较一般的硬盘目录配置在 storage.main.dir
中。例如节点上有一块 NVMe-SSD 硬盘加上两块 SATA-SSD 硬盘,你可以把 storage.latest.dir
设为 ["/nvme_ssd_a/data/tiflash"]
以及把 storage.main.dir
设为 ["/sata_ssd_b/data/tiflash", "/sata_ssd_c/data/tiflash"]
。TiFlash 会根据两个目录列表分别进行 I/O 压力分摊及数据均衡。需要注意此情况下,storage.latest.dir
中规划的容量大小需要占总规划容量的约 10%。