扩容tiflash失败

【 TiDB 使用环境`】生产环境
【 TiDB 版本】V6.1.0
【遇到的问题】集群从V5.2.2升级到V6.1.0后,tiflash每两分钟生成一个11G的core.*文件,故将tiflash全部缩容,然后再扩容。扩容时,提示 目录冲突 Error: Deploy directory overlaps to another instance (spec.deploy.dir_overlap)
【复现路径】
【问题现象及影响】

  • 缩容
  1. SELECT * FROM information_schema.tiflash_replica;ALTER TABLE DB.TABLE SET tiflash replica 0;
  2. tiup cluster scale-in hrdb --node X.X.X.X:X tiup cluster prune cluster
  • 扩容
    [root@tidb01 config-tidb]# cat scale-out-20220728-51.yaml
    global:
    user: “tidb”
    ssh_port: 22
    deploy_dir: “/home/tidb/tidb-deploy”
    data_dir: “/home/tidb/tidb-data”
    log_dir: “/home/tidb/tidb-logs”

    tiflash_servers:

    • host: X.X.X.X

[root@tidb01 config-tidb]# tiup cluster scale-out XXXX scale-out-20220728-51.yaml

【附件】 相关日志及监控(https://metricstool.pingcap.com/)


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

强制缩容有效么? 加参数 --force

不行,就试试下面的这个:
采用手动缩容…
https://docs.pingcap.com/zh/tidb/stable/scale-tidb-using-tiup#方案二手动缩容-tiflash-节点

curl http://<pd_ip>:<pd_port>/pd/api/v1/config/rules/group/tiflash
tiup ctl:<cluster-version> pd -u http://<pd_ip>:<pd_port> store delete <store_id>
tiup cluster edit-config <cluster-name>
tiup cluster display <cluster-name>
以上命令都没有Tiflash的信息,缩容应该是成功了的

恭喜了~ :cowboy_hat_face:

:sweat_smile:但是我现在是扩容失败

重新扩就好拉,反正失败了,你也知道怎么处理了

已经缩容完了,现在是无法扩容:skull_and_crossbones:

你把原来的 tiflash 节点上的数据目录都清理掉阿,该初始化干的活,一个都不能少…

不然会认为,节点上已经有 tiflash 存活,无法扩容…

deploy_dir、data_dir、log_dir 目录上有关tiflash的数据都已清理了的,但是扩容还是失败

你的这个配置文件要改一下,deploy_dir,data_dir,log_dir 在tiflash_servers 的模块单独定义一个没有使用过的文件夹

举个栗子

tiflash_servers:

  • host: 192.168.135.148
    tcp_port: 9001
    http_port: 8124
    flash_service_port: 3931
    flash_proxy_port: 20171
    flash_proxy_status_port: 20293
    metrics_port: 8235
    deploy_dir: “/tidb-deploy/tiflash-9001”
    data_dir: “/tidb-data/tiflash-9001”
    log_dir: “/tidb-deploy/tiflash-9001/log”

指定目录也失败。看了一下,应该是最开始部署的时候,各个组件的log都存放在同一个目录log_dir: /home/tidb/tidb-logs

[root@tidb01 config-tidb]# cat /root/.tiup/storage/cluster/clusters/hrdb/meta.yaml
user: tidb
tidb_version: v6.1.0
last_ops_ver: |-
  1.10.2 tiup
  Go Version: go1.18.3
  Git Ref: v1.10.2
  GitHash: 2de5b500c9fae6d418fa200ca150b8d5264d6b19
topology:
  global:
    user: tidb
    ssh_port: 22
    ssh_type: builtin
    deploy_dir: /home/tidb/tidb-deploy
    data_dir: /home/tidb/tidb-data
    log_dir: /home/tidb/tidb-logs
    os: linux
    arch: amd64
  monitored:
    node_exporter_port: 9100
    blackbox_exporter_port: 9115
    deploy_dir: /home/tidb/tidb-deploy/monitor-9100
    data_dir: /home/tidb/tidb-data/monitor-9100
    log_dir: /home/tidb/tidb-deploy/monitor-9100/log
  server_configs:
    tidb:
      log.slow-threshold: 300
    tikv: {}
    pd:
      replication.enable-placement-rules: true
      schedule.leader-schedule-limit: 4
      schedule.region-schedule-limit: 2048
      schedule.replica-schedule-limit: 64
    tiflash:
      profiles.default.max_memory_usage: 10000000000
      profiles.default.max_memory_usage_for_all_queries: 0
    tiflash-learner: {}
    pump: {}
    drainer: {}
    cdc: {}
    grafana: {}
  tidb_servers:
  - host: 172.23.20.71
    ssh_port: 22
    port: 4000
    status_port: 10080
    deploy_dir: /home/tidb/tidb-deploy/tidb-4000
    log_dir: /home/tidb/tidb-logs
    arch: amd64
    os: linux
  - host: 172.23.20.79
    ssh_port: 22
    port: 4000
    status_port: 10080
    deploy_dir: /home/tidb/tidb-deploy/tidb-4000
    log_dir: /home/tidb/tidb-logs
    arch: amd64
    os: linux
  - host: 172.23.20.72
    ssh_port: 22
    port: 4000
    status_port: 10080
    deploy_dir: /home/tidb/tidb-deploy/tidb-4000
    log_dir: /home/tidb/tidb-logs
    arch: amd64
    os: linux
  tikv_servers:
  - host: 172.23.20.51
    ssh_port: 22
    port: 20160
    status_port: 20180
    deploy_dir: /home/tidb/tidb-deploy/tikv-20160
    data_dir: /home/tidb/tidb-data/tikv-20160
    log_dir: /home/tidb/tidb-logs
    arch: amd64
    os: linux
  - host: 172.23.20.53
    ssh_port: 22
    port: 20160
    status_port: 20180
    deploy_dir: /home/tidb/tidb-deploy/tikv-20160
    data_dir: /home/tidb/tidb-data/tikv-20160
    log_dir: /home/tidb/tidb-logs
    arch: amd64
    os: linux
  - host: 172.23.20.72
    ssh_port: 22
    port: 20160
    status_port: 20180
    deploy_dir: /home/tidb/tidb-deploy/tikv-20160
    data_dir: /home/tidb/tidb-data/tikv-20160
    log_dir: /home/tidb/tidb-logs
    arch: amd64
    os: linux
  tiflash_servers: []
  pd_servers:
  - host: 172.23.20.71
    ssh_port: 22
    name: pd-172.23.20.71-2379
    client_port: 2379
    peer_port: 2380
    deploy_dir: /home/tidb/tidb-deploy/pd-2379
    data_dir: /home/tidb/tidb-data/pd-2379
    log_dir: /home/tidb/tidb-logs
    arch: amd64
    os: linux
  - host: 172.23.20.79
    ssh_port: 22
    name: pd-172.23.20.79-2379
    client_port: 2379
    peer_port: 2380
    deploy_dir: /home/tidb/tidb-deploy/pd-2379
    data_dir: /home/tidb/tidb-data/pd-2379
    log_dir: /home/tidb/tidb-logs
    arch: amd64
    os: linux
  - host: 172.23.20.72
    ssh_port: 22
    name: pd-172.23.20.72-2379
    client_port: 2379
    peer_port: 2380
    deploy_dir: /home/tidb/tidb-deploy/pd-2379
    data_dir: /home/tidb/tidb-data/pd-2379
    log_dir: /home/tidb/tidb-logs
    arch: amd64
    os: linux
  monitoring_servers:
  - host: 172.23.20.71
    ssh_port: 22
    port: 9090
    ng_port: 12020
    deploy_dir: /home/tidb/tidb-deploy/prometheus-9090
    data_dir: /home/tidb/tidb-data/prometheus-9090
    log_dir: /home/tidb/tidb-logs
    external_alertmanagers: []
    arch: amd64
    os: linux
  grafana_servers:
  - host: 172.23.20.71
    ssh_port: 22
    port: 3000
    deploy_dir: /home/tidb/tidb-deploy/grafana-3000
    arch: amd64
    os: linux
    username: admin
    password: admin
    anonymous_enable: false
    root_url: ""
    domain: ""
  alertmanager_servers:
  - host: 172.23.20.71
    ssh_port: 22
    web_port: 9093
    cluster_port: 9094
    deploy_dir: /home/tidb/tidb-deploy/alertmanager-9093
    data_dir: /home/tidb/tidb-data/alertmanager-9093
    log_dir: /home/tidb/tidb-logs
    arch: amd64
    os: linux

可不可以麻烦你吧global那部分去掉再 试一下

就是只留 tiflash_serves 那一部分像我的栗子那样

另外看你当前的配置好像所有组件的log目录都是一样的log_dir: /home/tidb/tidb-logs
不知道这里是不是有什么影响

已经试过了,还是不行

嗯,也在猜想是由于这个原因。
但是由于是生产环境,使用tiup cluster edit-config ${cluster-name}需要重启集群,暂时不太可行。而且也不确定是否这个原因。

不是说5.3之前的版本升级到5.3之后的版本,TiFlash不支持在线升级么?

是的,我说的就是这个。感觉有点复杂,不如直接删掉TiFlash副本,升级之后再添加TiFlash副本

我现在是升级后,删除了tiflash,无法再添加tiflash或其他组件了。都提示目录冲突