Skip to content

Commit 6ebbe64

Browse files
authored
br: split regions before pitr restore (#39941)
close #37207
1 parent f1647c8 commit 6ebbe64

12 files changed

+1295
-2
lines changed

br/pkg/restore/BUILD.bazel

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ go_library(
6161
"//util/collate",
6262
"//util/hack",
6363
"//util/mathutil",
64+
"//util/sqlexec",
6465
"//util/table-filter",
6566
"@com_github_emirpasic_gods//maps/treemap",
6667
"@com_github_go_sql_driver_mysql//:mysql",

br/pkg/restore/client.go

+13
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ import (
5353
"github.com/pingcap/tidb/util/codec"
5454
"github.com/pingcap/tidb/util/collate"
5555
"github.com/pingcap/tidb/util/mathutil"
56+
"github.com/pingcap/tidb/util/sqlexec"
5657
filter "github.com/pingcap/tidb/util/table-filter"
5758
"github.com/tikv/client-go/v2/oracle"
5859
pd "github.com/tikv/pd/client"
@@ -1126,6 +1127,18 @@ func (rc *Client) SplitRanges(ctx context.Context,
11261127
return SplitRanges(ctx, rc, ranges, rewriteRules, updateCh, isRawKv)
11271128
}
11281129

1130+
func (rc *Client) WrapLogFilesIterWithSplitHelper(iter LogIter, rules map[int64]*RewriteRules, g glue.Glue, store kv.Storage) (LogIter, error) {
1131+
se, err := g.CreateSession(store)
1132+
if err != nil {
1133+
return nil, errors.Trace(err)
1134+
}
1135+
execCtx := se.GetSessionCtx().(sqlexec.RestrictedSQLExecutor)
1136+
splitSize, splitKeys := utils.GetRegionSplitInfo(execCtx)
1137+
log.Info("get split threshold from tikv config", zap.Uint64("split-size", splitSize), zap.Int64("split-keys", splitKeys))
1138+
client := split.NewSplitClient(rc.GetPDClient(), rc.GetTLSConfig(), false)
1139+
return NewLogFilesIterWithSplitHelper(iter, rules, client, splitSize, splitKeys), nil
1140+
}
1141+
11291142
// RestoreSSTFiles tries to restore the files.
11301143
func (rc *Client) RestoreSSTFiles(
11311144
ctx context.Context,

0 commit comments

Comments
 (0)