func clearMaster(dbName string, swm *swarm.Swarm) error { err := swm.MasterReset(dbName) if err != nil { return err } return nil }
func changeMaster(swm *swarm.Swarm, fromName, toIp string, toPort int) error { slaveStatus, err := swm.SlaveShowStatus(fromName) if err != nil { return err } log.WithFields(log.Fields{ "DbName": fromName, "SlaveStatus": slaveStatus, }).Debug("change master") if slaveStatus.MasterIp == toIp && slaveStatus.MasterPort == toPort { if slaveStatus.SlaveIoRunning == "No" && slaveStatus.SlaveSqlRunning == "No" { // 1.4 start slave err = swm.SlaveStart(fromName) if err != nil { return err } } return nil } if slaveStatus.SlaveIoRunning == "Yes" || slaveStatus.SlaveSqlRunning == "Yes" { // 1.1 stop slave err = swm.SlaveStop(fromName) if err != nil { return err } } if slaveStatus.MasterIp != "" { // 1.2 reset slave err = swm.SlaveReset(fromName) if err != nil { return err } } // 1.3 get gtid_executed gtidExecuted, err := swm.GetGtidExecuted(fromName) if err != nil { return err } if gtidExecuted != "" { // 1.4 reset master err = swm.MasterReset(fromName) if err != nil { return err } // 1.5 set gtid_purged err = swm.SetGtidPurged(fromName, gtidExecuted) if err != nil { return err } } // 1.6 change master err = swm.ChangeMaster(fromName, toIp, toPort) if err != nil { return err } // 1.7 start slave err = swm.SlaveStart(fromName) if err != nil { return err } return nil }