diff --git a/pkg/cluster/manager/builder.go b/pkg/cluster/manager/builder.go index a945a664f4..b2b15b8050 100644 --- a/pkg/cluster/manager/builder.go +++ b/pkg/cluster/manager/builder.go @@ -188,7 +188,8 @@ func buildScaleOutTask( tb := task.NewSimpleUerSSH(m.logger, inst.GetManageHost(), inst.GetSSHPort(), base.User, gOpt, p, sshType). Mkdir(base.User, inst.GetManageHost(), deployDirs...). Mkdir(base.User, inst.GetManageHost(), dataDirs...). - Mkdir(base.User, inst.GetManageHost(), logDir) + Mkdir(base.User, inst.GetManageHost(), logDir). + Mkdir(base.User, inst.GetManageHost(), inst.ExtraDirs()...) srcPath := "" if patchedComponents.Exist(inst.ComponentName()) { diff --git a/pkg/cluster/manager/deploy.go b/pkg/cluster/manager/deploy.go index c9b413edd3..19e4af00dc 100644 --- a/pkg/cluster/manager/deploy.go +++ b/pkg/cluster/manager/deploy.go @@ -266,7 +266,8 @@ func (m *Manager) Deploy( t := task.NewSimpleUerSSH(m.logger, inst.GetManageHost(), inst.GetSSHPort(), globalOptions.User, gOpt, sshProxyProps, globalOptions.SSHType). Mkdir(globalOptions.User, inst.GetManageHost(), deployDirs...). - Mkdir(globalOptions.User, inst.GetManageHost(), dataDirs...) + Mkdir(globalOptions.User, inst.GetManageHost(), dataDirs...). + Mkdir(globalOptions.User, inst.GetManageHost(), inst.ExtraDirs()...) if deployerInstance, ok := inst.(DeployerInstance); ok { deployerInstance.Deploy(t, "", deployDir, version, name, clusterVersion) diff --git a/pkg/cluster/spec/instance.go b/pkg/cluster/spec/instance.go index eb7027d9b1..97a896ee35 100644 --- a/pkg/cluster/spec/instance.go +++ b/pkg/cluster/spec/instance.go @@ -103,6 +103,7 @@ type Instance interface { GetNumaNode() string GetNumaCores() string DeployDir() string + ExtraDirs() []string UsedPorts() []int UsedDirs() []string Status(ctx context.Context, timeout time.Duration, tlsCfg *tls.Config, pdList ...string) string @@ -393,6 +394,10 @@ func (i *BaseInstance) DeployDir() string { return reflect.Indirect(reflect.ValueOf(i.InstanceSpec)).FieldByName("DeployDir").String() } +func (i *BaseInstance) ExtraDirs() []string { + return nil +} + // TLSDir implements Instance interface func (i *BaseInstance) TLSDir() string { return i.DeployDir() diff --git a/pkg/cluster/spec/tikv.go b/pkg/cluster/spec/tikv.go index 4c40fb1408..5957c3c38b 100644 --- a/pkg/cluster/spec/tikv.go +++ b/pkg/cluster/spec/tikv.go @@ -461,6 +461,15 @@ func (i *TiKVInstance) PostRestart(ctx context.Context, topo Topology, tlsCfg *t return nil } +func (i *TiKVInstance) ExtraDirs() []string { + spec := i.InstanceSpec.(*TiKVSpec) + raftDir := spec.Config["raftstore.raftdb-path"] + if raftDir == nil { + return nil + } + return []string{raftDir.(string)} +} + func addr(spec *TiKVSpec) string { if spec.AdvertiseAddr != "" { return spec.AdvertiseAddr