Region merge相关参数未生效,不能按计划merge~

【TiDB 版本】 2.1.6

【集群节点分布】 3台机器,每台机器部署1个TiDB、1个PD、2个TiKV、1个pump,第2台机器多部署1个drainer。

【问题描述】尝试开启region merge,修改pd.yml相关参数,包括max-merge-region-size和max-merge-region-keys。重新部署配置,重启集群后,发现pd部署目录的pd.toml配置已更新,merge已打开:

观察其中1个pd(pd1)的日志,发现启动时已更新配置,merge已打开:

但pd-ctl显示配置未更新,merge未打开:

实际观察region的确没有在合并,请问如何解释?

您好: 请帮忙反馈下pd的日志,另外,请尝试下使用pd-ctl更改参数是否生效呢?多谢.

通过pd-ctl config set相关配置项,滚动重启集群,发现仍然没有merge。

通过git hub上贵公司提供的检查脚本显示有待合并region(更改merge配置前后结果一样):

pd1(pd leader)的日志如下(从11.8更改配置尝试region merge):

pd1.log (1.2 MB)

  • region merge 相关配置,辛苦以 pd-ctl 中 config show 为准。
  • 麻烦尝试使用 config set 配置,不需要滚动集群。

可以发下当前的 region merge 的相关配置。

  • 还有就是 region merge 开启,会有一定时间延迟

我后来就是用 pd-ctl 的 config set 设置的。config show显示如下:

另外,我已经观察了4个多小时了,始终没有merge。

  • 还有一种可能就是,这些符合合并的 region 是不同表的。我们默认不会合并不同表的 region。

请问该如何跳过这个控制呢?有相关文档吗?

  • 配置 PD 配置文件,将 namespace-classifier = “default” (默认是 table),默认 table。为隐藏参数。
  • 按照我们当前这个region 数量,不推荐开启。

我想测试一下,但pd-ctl设置config set namespace-classifier “default"不生效啊,config show all显示namespace-classifier仍为"table”。

请问该如何设置namespace-classifier呢?

  • 这个需要修改配置文件,滚动 pd 节点让其生效。

修改pd.yml中namespace-classifier,然后rolling_update.yml --tags=pd滚动重启pd。发现部署目录pd.toml中namespace-classifier已修改,但config show显示仍然为"table"。并且观察实际没有merge。

请问如何确定namespace-classifier设置为“default”生效了呢?

  • 看下 pd.log 中的启动日志,还有 config 目录下的配置文件是否正常修改了呢。

经过测试,region merge已生效。请问一般什么场景将namespace-classifier设为default?打开会对哪方面造成影响呢?性能有影响?

你好: –namespace-classifier 指定 PD 使用的 namespace 分类器。 默认:”table” 如果 TiKV 不与 TiDB 集群配合运行,建议配置为 ‘default’。
所以通常情况下,请不要修改此配置,多谢

tikv不与tidb集群配合运行?是指tikv角色不与tidb角色部署在同一台服务器?

您好: 指的是单独使用,可能只是用tikv,多谢