TiFlash 配置参数

    可通过 调整参数。如果你使用 TiUP 部署,可以用 代替 pd-ctl -u <pd_ip:pd_port> 命令。

    • replica-schedule-limit:用来控制 replica 相关 operator 的产生速度(涉及到下线、补副本的操作都与该参数有关)

      注意

      不要超过 region-schedule-limit,否则会影响正常 TiKV 之间的 Region 调度。

    • store-balance-rate:用于限制每个 TiKV store 或 TiFlash store 的 Region 调度速度。注意这个参数只对新加入集群的 store 有效,如果想立刻生效请用下面的方式。

      tiflash-server - 图2

      4.0.2 版本之后(包括 4.0.2 版本)废弃了 store-balance-rate 参数且 store limit 命令有部分变化。该命令变化的细节请参考 。

      • 使用 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 配置参数

    小贴士

    如果你需要调整配置项的值,请参考修改配置参数进行操作。

    1. [server]
    2. engine-addr = 外部访问 TiFlash coprocessor 服务的地址
    3. [raftstore]
    4. ## 处理 Raft 数据落盘的线程池中线程的数量
    5. apply-pool-size = 4
    6. ## 处理 Raft 的线程池中线程的数量,即 Raftstore 线程池的大小。
    7. store-pool-size = 4
    8. ## 控制处理 snapshot 的线程数,默认为 2。设为 0 则关闭多线程优化
    9. snap-handle-pool-size = 2
    10. ## 控制 raft store 持久化 WAL 的最小间隔。通过适当增大延迟以减少 IOPS 占用,默认为 "4ms",设为 "0ms" 则关闭该优化。
    11. [security]
    12. ## 从 v5.0 引入,控制是否开启日志脱敏
    13. ## 若开启该选项,日志中的用户数据会以 `?` 代替显示
    14. ## 默认值为 false
    15. [security.encryption]
    16. ## 数据文件的加密方法。
    17. ## 可选值为 "aes128-ctr"、"aes192-ctr"、"aes256-ctr"、"sm4-ctr" (仅 v6.4.0 及之后版本) 和 "plaintext"。
    18. ## 默认值为 "plaintext",即默认不开启加密功能。选择 "plaintext" 以外的值则表示启用加密功能。此时必须指定主密钥。
    19. data-encryption-method = "aes128-ctr"
    20. ## 轮换密钥的频率,默认值:`7d`。
    21. data-key-rotation-period = "168h" # 7 days
    22. [security.encryption.master-key]
    23. ## 指定启用加密时的主密钥。若要了解如何配置主密钥,可以参考《静态加密 - 配置加密》:https://docs.pingcap.com/zh/tidb/dev/encryption-at-rest#配置加密
    24. [security.encryption.previous-master-key]
    25. ## 指定轮换新主密钥时的旧主密钥。旧主密钥的配置格式与主密钥相同。若要了解如何配置主密钥,可以参考《静态加密 - 配置加密》:https://docs.pingcap.com/zh/tidb/dev/encryption-at-rest#配置加密

    除以上几项外,其余功能参数和 TiKV 的配置相同。需要注意的是:key 为 的 label 是保留项,不可手动配置。

    TiFlash 设置可用区

    TiFlash 支持单节点多盘部署。如果你的部署节点上有多块硬盘,可以通过以下的方式配置参数,提高节点的硬盘 I/O 利用率。TiUP 中参数配置格式参照详细 TiFlash 配置模版

    TiDB 集群版本低于 v4.0.9

    多个数据存储目录在 path 中以英文逗号分隔,比如 /nvme_ssd_a/data/tiflash,/sata_ssd_b/data/tiflash,/sata_ssd_c/data/tiflash。如果你的节点上有多块硬盘,推荐把性能最好的硬盘目录放在最前面,以更好地利用节点性能。

    如果节点上有多块相同规格的硬盘,可以把 path_realtime_mode 参数留空(或者把该值明确地设为 false)。这表示数据会在所有的存储目录之间进行均衡。但由于最新的数据仍然只会被写入到第一个目录,因此该目录所在的硬盘会较其他硬盘繁忙。

    如果节点上有多块规格不一致的硬盘,推荐把 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%。

    tiflash-server - 图4

    参数从 TiUP v1.2.5 版本开始支持。如果你的 TiDB 版本为 v4.0.9 及以上,请确保你的 TiUP 版本不低于 v1.2.5,否则 [storage] 中定义的数据目录不会被 TiUP 纳入管理。