用 tiup 部署集群,如何指定 tidb 的命令行参数?

  1. tidb-4000/scripts/run_tidb.sh 文件的内容我应该没有办法管理,那怎么改命令行参数呢?
  2. 顺便问一个类似的问题,以 tidb 为例,是不是 tidb 所有的配置项,现在都可以通过 topology.yaml 里的 server_configs 来配置了?

问题1 启动脚步是不需要修改的,相关的配置参数在 tiup edit config 中进行添加修改,具体参数可以参考官方文档 参考信息中 tidb 服务相关参数进行添加
问题2 tidb 分为服务参数和数据库参数 ,服务器参数通过tiup editconfig 修改后使用reload 命令向对应集群下发,数据库参数通过 set 语句在mysql client 内进行设置 ,如果是global 基本即会持久化 不受集群重启影响

可能我表达的不够清楚,我本意是说:tiup edit config 编辑的是配置文件,但是如何控制 tidb-server 的命令行参数呢。


启动脚本一般情况下是不需要修改的,但是肯定不满足某些使用场景。这个启动脚本,其实关键就是 tidb-server 的命令行参数。

我又看了一下最新的文档,关于命令行参数和配置文件,现在说的很明确:命令行参数可以指定的配置项,都可以在配置文件里指定,但是命令行参数指定的 优先级更高。

举个例子,如果我想改一下 tidb 命令行参数,把 --host=“0.0.0.0” 修改成 --host=“192.168.100.113” , 用 tiup 应该做不到吧?

请问改命令行启动参数的目的是什么?

每个参数都有修改的意义啊。

你可以看看 tiup 生成的 tidb-server 启动脚本,带了几个命令行参数,这些命令行参数不是通用的,用户想要修改,这应该是非常正常的场景吧?

比如上面提到的 --host ,默认值是 0.0.0.0 但是如果你有多个网卡多个地址,又不想把服务暴露在所有网卡地址,就得修改这个参数。其他参数也一样道理。

https://github.com/pingcap/tiup/blob/master/templates/scripts/run_tidb.sh.tpl#L25-L33
https://github.com/pingcap/tiup/blob/master/pkg/cluster/embed/autogen_pkger.go 或通过 base64 decode 下 对应模板文件 确认最新的配置项,解开看是可以调整的
image
通过修改 edit-config 中 global 配置 或者 host 配置可以调整

如果可以通过 edit-config 修改 --host 命令行参数的值,那怎么操作呢?是改 server_configs.tidb.host ? 还是 tidb_servers.host ? 用户不容易猜到的。比如你红框圈起来的 {{.StatusPort}} 在命令行参数里甚至不叫 status-port

这 --host 是我举的一个例子,其他参数怎么改呢? edit-config 去修改哪个值呢?我觉得现在的文档是很不明确的,会困扰用户。

目前文档并为将全部参数列出,因为并不是所有用户都有修改非常用参数需求。
也是一种保护机制,即并不推荐用户进行修改。

TIDB 相关具体参数可以查看 源码来进行确认
edit-config 模板 此模板在官网Tiup 部署上已提供链接
https://github.com/pingcap/tiup/blob/81b7b1d5d1783dfc0dc8abe02290ea174eec7ea1/examples/topology.example.yaml#L449-L460
TiDB host 支持的参数 此部分需要阅读源码获取
https://github.com/pingcap/tiup/blob/81b7b1d5d1783dfc0dc8abe02290ea174eec7ea1/pkg/cluster/spec/tidb.go#L28-L42

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