@@ -24,6 +24,7 @@ var flavor = flag.String("flavor", "mysql", "Flavor: mysql or mariadb")
24
24
25
25
var file = flag .String ("file" , "" , "Binlog filename" )
26
26
var pos = flag .Int ("pos" , 4 , "Binlog position" )
27
+ var gtid = flag .String ("gtid" , "" , "Binlog GTID set that this slave has executed" )
27
28
28
29
var semiSync = flag .Bool ("semisync" , false , "Support semi sync" )
29
30
var backupPath = flag .String ("backup_path" , "" , "backup path to store binlog files" )
@@ -57,10 +58,27 @@ func main() {
57
58
return
58
59
}
59
60
} else {
60
- s , err := b .StartSync (pos )
61
- if err != nil {
62
- fmt .Printf ("Start sync error: %v\n " , errors .ErrorStack (err ))
63
- return
61
+ var (
62
+ s * replication.BinlogStreamer
63
+ err error
64
+ )
65
+ if len (* gtid ) > 0 {
66
+ gset , err := mysql .ParseGTIDSet (* flavor , * gtid )
67
+ if err != nil {
68
+ fmt .Printf ("Failed to parse gtid %s with flavor %s, error: %v\n " ,
69
+ * gtid , * flavor , errors .ErrorStack (err ))
70
+ }
71
+ s , err = b .StartSyncGTID (gset )
72
+ if err != nil {
73
+ fmt .Printf ("Start sync by GTID error: %v\n " , errors .ErrorStack (err ))
74
+ return
75
+ }
76
+ } else {
77
+ s , err = b .StartSync (pos )
78
+ if err != nil {
79
+ fmt .Printf ("Start sync error: %v\n " , errors .ErrorStack (err ))
80
+ return
81
+ }
64
82
}
65
83
66
84
for {
0 commit comments