// StartReplicationCommands is part of the MysqlDaemon interface func (fmd *FakeMysqlDaemon) StartReplicationCommands(status *proto.ReplicationStatus) ([]string, error) { status.MasterConnectRetry = int(masterConnectRetry.Seconds()) if !reflect.DeepEqual(fmd.StartReplicationCommandsStatus, status) { return nil, fmt.Errorf("wrong status for StartReplicationCommands: expected %v got %v", fmd.StartReplicationCommandsStatus, status) } return fmd.StartReplicationCommandsResult, nil }
// StartReplicationCommands returns the commands used to start // replication to the provided master using the provided starting // position. The provided MasterConnectRetry will be ignored and // replaced by the command line parameter. func (mysqld *Mysqld) StartReplicationCommands(status *proto.ReplicationStatus) ([]string, error) { flavor, err := mysqld.flavor() if err != nil { return nil, fmt.Errorf("StartReplicationCommands needs flavor: %v", err) } params, err := dbconfigs.MysqlParams(mysqld.replParams) if err != nil { return nil, err } status.MasterConnectRetry = int(masterConnectRetry.Seconds()) return flavor.StartReplicationCommands(¶ms, status) }
// parseSlaveStatus parses the common fields of SHOW SLAVE STATUS. func parseSlaveStatus(fields map[string]string) proto.ReplicationStatus { status := proto.ReplicationStatus{ MasterHost: fields["Master_Host"], SlaveIORunning: fields["Slave_IO_Running"] == "Yes", SlaveSQLRunning: fields["Slave_SQL_Running"] == "Yes", } parseInt, _ := strconv.ParseInt(fields["Master_Port"], 10, 0) status.MasterPort = int(parseInt) parseInt, _ = strconv.ParseInt(fields["Connect_Retry"], 10, 0) status.MasterConnectRetry = int(parseInt) parseUint, _ := strconv.ParseUint(fields["Seconds_Behind_Master"], 10, 0) status.SecondsBehindMaster = uint(parseUint) return status }