修改 TiDB 集群配置
TiDB 集群自身支持通过 SQL 对 TiDB、TiKV、PD 等组件进行在线配置变更,无需重启集群组件。但是,对于部署在 Kubernetes 中的 TiDB 集群,部分组件在升级或者重启后,配置项会被 TidbCluster CR 中的配置项覆盖,导致在线变更的配置失效。
本文介绍如何修改部署在 Kubernetes 上的 TiDB 的集群配置,避免重启或升级导致配置失效。由于 PD 的特殊性,需要分别对 PD 和其他组件进行配置。
修改 TiDB/TiKV 等组件配置
对于 TiDB 和 TiKV,如果通过 SQL 进行在线配置变更,在升级或者重启后,配置项会被 TidbCluster CR 中的配置项覆盖,导致在线变更的配置失效。因此,如果需要持久化修改配置,你需要在 TidbCluster CR 中直接修改配置项。
对于 TiFlash、TiCDC 和 Pump,目前只能通过在 TidbCluster CR 中修改配置项。
在 TidbCluster CR 中修改配置项的步骤如下:
参考配置 TiDB 组件中的参数,修改集群的 TidbCluster CR 中各组件配置:
kubectl edit tc ${cluster_name} -n ${namespace}查看配置修改后的更新进度:
watch kubectl -n ${namespace} get pod -o wide当所有 Pod 都重建完毕进入
Running
状态后,配置修改完成。
修改 PD 组件配置
在 PD 首次启动成功后,PD 的部分配置项会持久化到 etcd 中,且后续将以 etcd 中的配置为准。因此,在 PD 首次启动后,这些配置项将无法再通过 TidbCluster CR 来进行修改。
PD 中支持在线修改的配置项里,除 log.level
外,其他配置项在 PD 首次启动之后均不再支持通过 TidbCluster CR 进行修改。
对于部署在 Kubernetes 中的 TiDB 集群,如需修改 PD 配置参数,需要使用 SQL、pd-ctl 或 PD server API 来动态进行修改。