@@ -311,6 +311,17 @@ func (server *ServerMonitor) JobBackupPhysical() (int64, error) {
311
311
312
312
now := time .Now ()
313
313
// Reset last backup meta
314
+ var prevId int64
315
+ prev := cluster .BackupMetaMap .GetPreviousBackup (cluster .Conf .BackupPhysicalType , server .URL )
316
+ if prev != nil {
317
+ prevId = prev .Id
318
+ }
319
+
320
+ // Remove from backup list, since the file will be replaced
321
+ if ! cluster .Conf .BackupKeepUntilValid {
322
+ cluster .BackupMetaMap .Delete (prevId )
323
+ }
324
+
314
325
server .LastBackupMeta .Physical = & config.BackupMetadata {
315
326
Id : now .Unix (),
316
327
StartTime : now ,
@@ -320,6 +331,7 @@ func (server *ServerMonitor) JobBackupPhysical() (int64, error) {
320
331
Source : server .URL ,
321
332
Dest : dest ,
322
333
Compressed : cluster .Conf .CompressBackups ,
334
+ Previous : prevId ,
323
335
}
324
336
325
337
cluster .BackupMetaMap .Set (server .LastBackupMeta .Physical .Id , server .LastBackupMeta .Physical )
@@ -1888,15 +1900,29 @@ func (server *ServerMonitor) JobBackupLogical() error {
1888
1900
1889
1901
cluster .SetInLogicalBackupState (true )
1890
1902
start := time .Now ()
1903
+ var prevId int64
1904
+ prev := cluster .BackupMetaMap .GetPreviousBackup (cluster .Conf .BackupLogicalType , server .URL )
1905
+ if prev != nil {
1906
+ prevId = prev .Id
1907
+ }
1908
+
1909
+ // Remove from backup list, since the file will be replaced
1910
+ if ! cluster .Conf .BackupKeepUntilValid {
1911
+ cluster .BackupMetaMap .Delete (prevId )
1912
+ }
1913
+
1891
1914
server .LastBackupMeta .Logical = & config.BackupMetadata {
1892
1915
Id : start .Unix (),
1893
1916
StartTime : start ,
1894
1917
BackupMethod : config .BackupMethodLogical ,
1895
1918
BackupTool : cluster .Conf .BackupLogicalType ,
1896
1919
BackupStrategy : config .BackupStrategyFull ,
1897
1920
Source : server .URL ,
1921
+ Previous : prevId ,
1898
1922
}
1899
1923
1924
+ cluster .BackupMetaMap .Set (server .LastBackupMeta .Logical .Id , server .LastBackupMeta .Logical )
1925
+
1900
1926
// Removing previous valid backup state and start
1901
1927
server .DelBackupLogicalCookie ()
1902
1928
@@ -1934,10 +1960,10 @@ func (server *ServerMonitor) JobBackupLogical() error {
1934
1960
if e2 := server .JobsUpdateState (task , "Backup completed" , 3 , 1 ); e2 != nil {
1935
1961
cluster .LogModulePrintf (cluster .Conf .Verbose , config .ConstLogModTask , config .LvlWarn , "Task only updated in runtime. Error while writing to jobs table: %s" , e2 .Error ())
1936
1962
}
1937
- finfo , e3 := os .Stat (filename )
1963
+ _ , e3 := os .Stat (filename )
1938
1964
if e3 == nil {
1939
1965
server .LastBackupMeta .Logical .EndTime = time .Now ()
1940
- server .LastBackupMeta .Logical .Size = finfo . Size ()
1966
+ server .LastBackupMeta .Logical .GetSize ()
1941
1967
server .LastBackupMeta .Logical .Completed = true
1942
1968
server .SetBackupLogicalCookie (config .ConstBackupLogicalTypeMysqldump )
1943
1969
}
@@ -1959,10 +1985,10 @@ func (server *ServerMonitor) JobBackupLogical() error {
1959
1985
if e2 := server .JobsUpdateState (task , "Backup completed" , 3 , 1 ); e2 != nil {
1960
1986
cluster .LogModulePrintf (cluster .Conf .Verbose , config .ConstLogModTask , config .LvlWarn , "Task only updated in runtime. Error while writing to jobs table: %s" , e2 .Error ())
1961
1987
}
1962
- finfo , e3 := os .Stat (outputdir )
1988
+ _ , e3 := os .Stat (outputdir )
1963
1989
if e3 == nil {
1964
1990
server .LastBackupMeta .Logical .EndTime = time .Now ()
1965
- server .LastBackupMeta .Logical .Size = finfo . Size ()
1991
+ server .LastBackupMeta .Logical .GetSize ()
1966
1992
server .LastBackupMeta .Logical .Completed = true
1967
1993
server .SetBackupLogicalCookie (config .ConstBackupLogicalTypeDumpling )
1968
1994
}
@@ -1985,10 +2011,10 @@ func (server *ServerMonitor) JobBackupLogical() error {
1985
2011
cluster .LogModulePrintf (cluster .Conf .Verbose , config .ConstLogModTask , config .LvlWarn , "Task only updated in runtime. Error while writing to jobs table: %s" , e2 .Error ())
1986
2012
}
1987
2013
1988
- finfo , e3 := os .Stat (outputdir )
2014
+ _ , e3 := os .Stat (outputdir )
1989
2015
if e3 == nil {
1990
2016
server .LastBackupMeta .Logical .EndTime = time .Now ()
1991
- server .LastBackupMeta .Logical .Size = finfo . Size ()
2017
+ server .LastBackupMeta .Logical .GetSize ()
1992
2018
server .LastBackupMeta .Logical .Completed = true
1993
2019
server .SetBackupLogicalCookie (config .ConstBackupLogicalTypeDumpling )
1994
2020
}
@@ -2834,8 +2860,8 @@ func (server *ServerMonitor) WriteBackupMetadata(backtype config.BackupMethod) {
2834
2860
return
2835
2861
}
2836
2862
2837
- if finfo , err := os .Stat (lastmeta .Dest ); err == nil {
2838
- lastmeta .Size = finfo . Size ()
2863
+ if _ , err := os .Stat (lastmeta .Dest ); err == nil {
2864
+ lastmeta .GetSize ()
2839
2865
lastmeta .EndTime = time .Now ()
2840
2866
}
2841
2867
@@ -2875,13 +2901,24 @@ func (server *ServerMonitor) WriteBackupMetadata(backtype config.BackupMethod) {
2875
2901
//Don't change river
2876
2902
if cluster .Conf .BackupKeepUntilValid && lastmeta .BackupTool != config .ConstBackupLogicalTypeRiver {
2877
2903
if lastmeta .Completed {
2904
+ // Delete previous meta with same type
2905
+ cluster .BackupMetaMap .Delete (lastmeta .Previous )
2878
2906
cluster .LogModulePrintf (cluster .Conf .Verbose , config .ConstLogModTask , config .LvlInfo , "Backup valid, removing old backup." )
2879
2907
exec .Command ("rm" , "-r" , lastmeta .Dest + ".old" ).Run ()
2880
2908
} else {
2881
2909
cluster .LogModulePrintf (cluster .Conf .Verbose , config .ConstLogModTask , config .LvlInfo , "Error occured in backup, rolling back to old backup." )
2882
2910
exec .Command ("mv" , lastmeta .Dest , lastmeta .Dest + ".err" ).Run ()
2883
2911
exec .Command ("mv" , lastmeta .Dest + ".old" , lastmeta .Dest ).Run ()
2884
2912
exec .Command ("rm" , "-r" , lastmeta .Dest + ".err" ).Run ()
2913
+
2914
+ // Revert to previous meta with same type
2915
+ cluster .BackupMetaMap .Delete (lastmeta .Id )
2916
+ switch backtype {
2917
+ case config .BackupMethodLogical :
2918
+ _ , server .LastBackupMeta .Logical = server .GetLatestMeta ("logical" )
2919
+ case config .BackupMethodPhysical :
2920
+ _ , server .LastBackupMeta .Physical = server .GetLatestMeta ("physical" )
2921
+ }
2885
2922
}
2886
2923
}
2887
2924
}
0 commit comments