MCPcopy
hub / github.com/wal-g/wal-g / HandleBackupRestore

Function HandleBackupRestore

internal/databases/sqlserver/backup_restore_handler.go:17–61  ·  view source on GitHub ↗
(backupName string, dbnames []string, fromnames []string, noRecovery bool)

Source from the content-addressed store, hash-verified

15)
16
17func HandleBackupRestore(backupName string, dbnames []string, fromnames []string, noRecovery bool) {
18 ctx, cancel := context.WithCancel(context.Background())
19 signalHandler := utility.NewSignalHandler(ctx, cancel, []os.Signal{syscall.SIGINT, syscall.SIGTERM})
20 defer func() { _ = signalHandler.Close() }()
21
22 storage, err := internal.ConfigureStorage()
23 tracelog.ErrorLogger.FatalOnError(err)
24
25 folder := storage.RootFolder()
26
27 backup, err := internal.GetBackupByName(backupName, utility.BaseBackupPath, folder)
28 tracelog.ErrorLogger.FatalOnError(err)
29
30 sentinel := new(SentinelDto)
31 err = backup.FetchSentinel(sentinel)
32 tracelog.ErrorLogger.FatalOnError(err)
33
34 db, err := getSQLServerConnection()
35 tracelog.ErrorLogger.FatalfOnError("failed to connect to SQLServer: %v", err)
36
37 dbnames, fromnames, err = getDatabasesToRestore(sentinel, dbnames, fromnames)
38 tracelog.ErrorLogger.FatalfOnError("failed to list databases to restore: %v", err)
39
40 lock, err := RunOrReuseProxy(ctx, cancel, folder)
41 tracelog.ErrorLogger.FatalOnError(err)
42 defer lock.Close()
43
44 backupName = backup.Name
45
46 err = runParallel(func(i int) error {
47 dbname := dbnames[i]
48 fromname := fromnames[i]
49 err := restoreSingleDatabase(ctx, db, folder, backupName, dbname, fromname)
50 if err != nil {
51 return err
52 }
53 if !noRecovery {
54 return recoverSingleDatabase(ctx, db, dbname)
55 }
56 return nil
57 }, len(dbnames), getDBConcurrency())
58 tracelog.ErrorLogger.FatalfOnError("overall restore failed: %v", err)
59
60 tracelog.InfoLogger.Printf("restore finished")
61}
62
63func restoreSingleDatabase(ctx context.Context,
64 db *sql.DB,

Callers 1

backup_restore.goFile · 0.92

Calls 15

CloseMethod · 0.95
NewSignalHandlerFunction · 0.92
ConfigureStorageFunction · 0.92
GetBackupByNameFunction · 0.92
getSQLServerConnectionFunction · 0.85
getDatabasesToRestoreFunction · 0.85
RunOrReuseProxyFunction · 0.85
runParallelFunction · 0.85
restoreSingleDatabaseFunction · 0.85
recoverSingleDatabaseFunction · 0.85
getDBConcurrencyFunction · 0.85
FatalOnErrorMethod · 0.80

Tested by

no test coverage detected