如何更改TiKV設定檔案路徑 via TiUP edit-config (immutable field changed ... Nothing changed)

TiDB同好們好,

 因原本佈署的TiDB安裝在/目錄下,因空間不夠,便mount一塊新的空間(/tidb)並搬移,但使用

tiup cluster edit-config [cluster_name]編輯新的路徑,會出現以下錯誤訊息:

操作步驟如下:
先關閉叢集
tiup cluster stop tidbcluster

在TiKV節點下
mv /tidb-deploy /tidb/
mv /tidb-data /tidb/

tiup cluster edit-config tidbcluster

修改部分:
deploy_dir: /tidb-deploy/tikv-20160 => /tidb/tidb-deploy/tikv-20160
data_dir: /tidb-data/tikv-20160 => /tidb/tidb-data/tikv-20160
log_dir: /tidb-deploy/tikv-20160/log => /tidb/tidb-deploy/tikv-20160/log

Starting component cluster: /root/.tiup/components/cluster/v1.1.2/tiup-cluster edit-config tidbcluster
New topology could not be saved: immutable field changed: TiKVServers.0.DeployDir changed from ‘/tidb-deploy/tikv-20160’ to ‘/tidb/tidb-deploy/tikv-20160’

Nothing changed.

請問官方有提供標準方式來更改data directory嗎?

p.s. 附件為尚未修改前的yaml設定檔
topology.yaml (4.3 KB)

你好,tiup 目前不支持通过 edit-config 方式直接修改集群的部署路径,一般建议在部署集群前提前规划好部署的磁盘和目录,可以尝试使用下面的方式修改路径,但存在一定风险性,操作前先做好配置文件和数据目录的备份:

  1. 停止集群
    tiup cluster stop {cluster-name}
  2. 编辑配置文件
    编辑.tiup/storage/cluster/clusters/{cluster-name}/meta.yaml,其中 meta.yaml 就是 tiup cluster edit-config 中看到的配置文件,将配置文件中的路径更改为你指定的新目录路径;
  3. 按照修改的配置文件,把原来部署目录移动到新目录路径,确保一定和配置文件中的路径一致;
  4. 删除 tikv 的数据目录中的 last_tikv.toml
    last_tikv.toml 中会记录 tikv 上一次的启动参数,tikv 启动后会检查哪些参数修改了,然后 tikv 是不允许修改数据目录的,所以要把这个文件删掉,“欺骗” tikv;
  5. 重启集群
    tiup cluster reload {cluster-name} -R pd --force
    tiup cluster reload {cluster-name} --force
1 个赞

Hi lizhengyang,

你提供的方法在v4.0.5版本實測後可以work,感謝你的協助!

不客气,有问题可以随时开贴提问。

我也是修改tikv目录,参考了你的建议,但是我没停止集群,也没有重启集群;只是关闭了修改的节点,然后reload了该节点。现在看起来是正常的,想跟你确认下,这样做会不会有什么问题?
步骤如下:
1,tiup cluster stop tidb-test -N 127.0.0.1:20160
2,在该节点建立新目录,并将 db,raft,snap移动到新目录中
3,删除 tikv 的数据目录中的conf/tikv.toml
4,编辑tiup配置文件 /meta.yaml
5,tiup cluster reload tidb-test -N 127.0.0.1:20160 --force

你这边如果只是单个 tikv 节点需要调整目录,这样做应该也可以,这边有一个比较完整的 SOP 可以参考下:

嗯这篇文章也看过了;
我是这样一个节点一个节点依次更改的,因为现网环境不能stop集群。
tiup display cluster 看节点服务是 up 正常的。
现在有个问题就是相应节点的Node_exporter 和 Blackbox_exporter起不来,是需要用tiup 重启下monitor模块吗?tiup有之前 ansible-playbook rolling_update_monitor.yml 这种功能的命令吗?没有找到~

可以先尝试 reload 下监控模块,看下 node_exporter 和 blackbox_exporter 能否正常启动。

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