From a38087df2808a36ed7bb4c875db075232606b53c Mon Sep 17 00:00:00 2001 From: xfan0805 Date: Fri, 28 Aug 2026 19:28:58 +0800 Subject: [PATCH] fix: partition_v2_fix_pt_init #20103 --- .../mysql/partitionsvr/partition_init.go | 2 +- .../partitionsvr/tendbcluster_partition.go | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/dbm-services/mysql/db-tools/dbactuator/pkg/components/mysql/partitionsvr/partition_init.go b/dbm-services/mysql/db-tools/dbactuator/pkg/components/mysql/partitionsvr/partition_init.go index ea00c340cc0..9fd2211716a 100644 --- a/dbm-services/mysql/db-tools/dbactuator/pkg/components/mysql/partitionsvr/partition_init.go +++ b/dbm-services/mysql/db-tools/dbactuator/pkg/components/mysql/partitionsvr/partition_init.go @@ -81,7 +81,7 @@ func (pc *PartitionConfig) ExecuteInitStatement(pd *PartitionDetail, conn *nativ func (pc *PartitionConfig) ExecuteInitStatementByPTTool(initStatement string, forceInitInfo *ForceInitInfo, partitionStepInfo *PartitionStepInfo) { // 有唯一键,使用pt工具 - pt_tool := "percona-toolkit-3.5.0/bin/pt-online-schema-change" + pt_tool := "percona-toolkit-3.5.7/bin/pt-online-schema-change" user := forceInitInfo.User pwd := forceInitInfo.Pwd host := forceInitInfo.Host diff --git a/dbm-services/mysql/db-tools/dbactuator/pkg/components/mysql/partitionsvr/tendbcluster_partition.go b/dbm-services/mysql/db-tools/dbactuator/pkg/components/mysql/partitionsvr/tendbcluster_partition.go index 808c1ec7885..d279dda25e4 100644 --- a/dbm-services/mysql/db-tools/dbactuator/pkg/components/mysql/partitionsvr/tendbcluster_partition.go +++ b/dbm-services/mysql/db-tools/dbactuator/pkg/components/mysql/partitionsvr/tendbcluster_partition.go @@ -29,16 +29,12 @@ func (c *PartitionExecComp) TendbClusterPartition() (err error) { return fmt.Errorf("error occurred while getting shard info: %s", err.Error()) } - // 强制执行是任务级别的,对此次所有分区配置通用,使用同一个ForceInitInfo + // 强制执行是任务级别的开关,DSN 在各分片上再组装 // 非强制执行,则为nil var forceInitInfo *ForceInitInfo if c.Params.Force { forceInitInfo = &ForceInitInfo{ Force: c.Params.Force, - User: c.GeneralParam.RuntimeAccountParam.PartitionYwUser, - Pwd: c.GeneralParam.RuntimeAccountParam.PartitionYwPwd, - Host: c.Params.Cluster.IP, - Port: c.Params.Cluster.Port, } } // 使用带缓冲的channel实现并发控制,最大并发数为3 @@ -149,8 +145,17 @@ func (c *PartitionExecComp) ExecuteOneConfigOnShards(tdbCluPartConf *TdbCluPartC mu.Unlock() return } - - tdbCluPartConf.ExecuteOneShardPartition(tdbCluPartConf, shard, shardConn, partitionShardResult, forceInitInfo, partialForce) + var shardForceInitInfo *ForceInitInfo + if forceInitInfo != nil { + shardForceInitInfo = &ForceInitInfo{ + Force: forceInitInfo.Force, + User: shard.Account, + Pwd: shard.PWD, + Host: shard.IP, + Port: shard.Port, + } + } + tdbCluPartConf.ExecuteOneShardPartition(tdbCluPartConf, shard, shardConn, partitionShardResult, shardForceInitInfo, partialForce) if !partitionShardResult.ShardStatus { mu.Lock()