6
6
"os/exec"
7
7
8
8
"github.com/spf13/cobra"
9
+ "github.com/tanji/mariadb-tools/dbhelper"
9
10
)
10
11
11
12
var (
@@ -21,6 +22,7 @@ func init() {
21
22
provisionCmd .Flags ().StringVar (& destination , "destination" , "" , "Source server" )
22
23
bootstrapCmd .Flags ().BoolVar (& cleanall , "clean-all" , false , "Reset all slaves and binary logs before bootstrapping" )
23
24
bootstrapCmd .Flags ().StringVar (& prefMaster , "prefmaster" , "" , "Preferred server for master initialization" )
25
+ bootstrapCmd .Flags ().StringVar (& masterConn , "master-connection" , "" , "Connection name to use for multisource replication" )
24
26
}
25
27
26
28
var bootstrapCmd = & cobra.Command {
@@ -36,9 +38,22 @@ var bootstrapCmd = &cobra.Command{
36
38
log .Fatal (err )
37
39
}
38
40
for _ , server := range servers {
39
- server .Conn .Exec ("RESET MASTER" )
40
- server .Conn .Exec ("STOP SLAVE" )
41
- server .Conn .Exec ("RESET SLAVE ALL" )
41
+ err = dbhelper .SetDefaultMasterConn (server .Conn , masterConn )
42
+ if err != nil {
43
+ log .Fatal (err )
44
+ }
45
+ err = dbhelper .ResetMaster (server .Conn )
46
+ if err != nil {
47
+ log .Fatal (err )
48
+ }
49
+ err = dbhelper .StopAllSlaves (server .Conn )
50
+ if err != nil {
51
+ log .Fatal (err )
52
+ }
53
+ err = dbhelper .ResetAllSlaves (server .Conn )
54
+ if err != nil {
55
+ log .Fatal (err )
56
+ }
42
57
}
43
58
} else {
44
59
err := topologyInit ()
@@ -70,9 +85,15 @@ var bootstrapCmd = &cobra.Command{
70
85
if key == masterKey {
71
86
continue
72
87
} else {
73
- stmt := "CHANGE MASTER TO master_host='" + servers [masterKey ].IP + "', master_port=" + servers [masterKey ].Port + ", master_user='" + rplUser + "', master_password='" + rplPass + "', master_use_gtid=current_pos"
74
- server .Conn .Exec (stmt )
75
- server .Conn .Exec ("START SLAVE" )
88
+ stmt := "CHANGE MASTER '" + masterConn + "' TO master_host='" + servers [masterKey ].IP + "', master_port=" + servers [masterKey ].Port + ", master_user='" + rplUser + "', master_password='" + rplPass + "', master_use_gtid=current_pos"
89
+ _ , err := server .Conn .Exec (stmt )
90
+ if err != nil {
91
+ log .Fatal (stmt , err )
92
+ }
93
+ _ , err = server .Conn .Exec ("START SLAVE '" + masterConn + "'" )
94
+ if err != nil {
95
+ log .Fatal ("Start slave: " , err )
96
+ }
76
97
}
77
98
}
78
99
log .Printf ("INFO : Environment bootstrapped with %s as master" , servers [masterKey ].URL )
0 commit comments