Skip to content

Commit 23b4eeb

Browse files
committed
fix(redis): tendisplus 备份用高版本tar TencentBlueKing#9250
1 parent d155f31 commit 23b4eeb

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

dbm-services/redis/db-tools/dbmon/pkg/consts/consts.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package consts
33

44
// version
55
const (
6-
BkDbmonVersion = "v0.16"
6+
BkDbmonVersion = "v0.17"
77
)
88

99
const (
@@ -126,6 +126,7 @@ const (
126126
TendisKeyLifecycleBin = "/home/mysql/dbtools/tendis-key-lifecycle"
127127
ZkWatchBin = "/home/mysql/dbtools/zkwatch"
128128
ZstdBin = "/home/mysql/dbtools/zstd"
129+
TarBin = "/home/mysql/dbtools/tar"
129130
LzopBin = "/home/mysql/dbtools/lzop"
130131
LdbWithV38Bin = "/home/mysql/dbtools/ldb_with_len.3.8"
131132
LdbWithV513Bin = "/home/mysql/dbtools/ldb_with_len.5.13"

dbm-services/redis/db-tools/dbmon/pkg/redisfullbackup/task.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ func (task *BackupTask) TendisplusInstanceBackup() {
439439
return
440440
}
441441
task.EndTime = time.Now().Local()
442-
tarFile, task.Err = util.TarADir(backupFullDir, task.BackupDir, true)
442+
tarFile, task.Err = util.TarADir(backupFullDir, task.BackupDir, true, true)
443443
task.BackupFile = tarFile
444444
if task.Err != nil {
445445
mylog.Logger.Error(task.Err.Error())
@@ -514,7 +514,7 @@ func (task *BackupTask) TendisSSDInstanceBackup() {
514514
backupFullDir = fileWithBinlogPos
515515

516516
// 只做打包,不做压缩,rocksdb中已经做了压缩
517-
tarFile, task.Err = util.TarADir(backupFullDir, task.BackupDir, true)
517+
tarFile, task.Err = util.TarADir(backupFullDir, task.BackupDir, true, false)
518518
if task.Err != nil {
519519
mylog.Logger.Error(task.Err.Error())
520520
return

dbm-services/redis/db-tools/dbmon/util/compress.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,12 @@ func SplitLargeFile(file, splitTargetSize string, rmOrigin bool) (splitedFiles [
126126
// 参数: originDir 为 /data/dbbak/REDIS-FULL-rocksdb-1.1.1.1-30000
127127
// 参数: tarSaveDir 为 /tmp/
128128
// 返回值: tarFile 为 /tmp/REDIS-FULL-rocksdb-1.1.1.1-30000.tar
129-
func TarADir(originDir, tarSaveDir string, rmOrigin bool) (tarFile string, err error) {
129+
func TarADir(originDir, tarSaveDir string, rmOrigin bool, tarUseDbTools bool) (tarFile string, err error) {
130130
var tarCmd, rmCmd string
131+
tarBin := "tar" // use by default: system
132+
if tarUseDbTools {
133+
tarBin = consts.TarBin
134+
}
131135
basename := filepath.Base(originDir)
132136
baseDir := filepath.Dir(originDir)
133137
if tarSaveDir == "" {
@@ -136,23 +140,23 @@ func TarADir(originDir, tarSaveDir string, rmOrigin bool) (tarFile string, err e
136140
tarFile = filepath.Join(tarSaveDir, basename+".tar")
137141

138142
if rmOrigin {
139-
tarCmd = fmt.Sprintf(`cd %s && tar -cf %s %s && rm -rf %s`,
140-
baseDir, filepath.Base(tarFile), basename, basename)
143+
tarCmd = fmt.Sprintf(`cd %s && %s -cf %s %s && rm -rf %s`,
144+
baseDir, tarBin, filepath.Base(tarFile), basename, basename)
141145
rmCmd = fmt.Sprintf("rm -f %s", tarFile)
142146
} else {
143-
tarCmd = fmt.Sprintf(`cd %s && tar -cf %s %s`, baseDir, filepath.Base(tarFile), basename)
147+
tarCmd = fmt.Sprintf(`cd %s && %s -cf %s %s`, baseDir, tarBin, filepath.Base(tarFile), basename)
144148
rmCmd = fmt.Sprintf("rm -f %s", tarFile)
145149
}
146150
mylog.Logger.Info(tarCmd)
147151
maxRetryTimes := 5
148152
for maxRetryTimes >= 0 {
149153
maxRetryTimes--
150154
err = nil
151-
_, err = RunBashCmd(tarCmd, "", nil, 6*time.Hour)
155+
_, err = RunBashCmd(tarCmd, "", nil, 8*time.Hour)
152156
if err != nil && !strings.Contains(err.Error(), "file changed as we read it") {
153157
// 如果报错则删除tar文件然后重试
154158
mylog.Logger.Info(rmCmd)
155-
RunBashCmd(rmCmd, "", nil, 10*time.Minute)
159+
RunBashCmd(rmCmd, "", nil, 30*time.Minute)
156160
continue
157161
}
158162
err = nil
@@ -169,7 +173,7 @@ func TarADir(originDir, tarSaveDir string, rmOrigin bool) (tarFile string, err e
169173
func TarAndSplitADir(originDir, targetSaveDir, splitTargetSize string, rmOrigin bool) (
170174
splitedFiles []string, err error) {
171175
var tarFile string
172-
tarFile, err = TarADir(originDir, targetSaveDir, rmOrigin)
176+
tarFile, err = TarADir(originDir, targetSaveDir, rmOrigin, false)
173177
if err != nil {
174178
return
175179
}

0 commit comments

Comments
 (0)