func (m *master) runReplication() { m.wg.Add(1) defer m.wg.Done() for { select { case <-m.quit: return default: if err := m.connect(); err != nil { log.Error("connect master %s error %s, try 2s later", m.info.Addr, err.Error()) time.Sleep(2 * time.Second) continue } } if m.info.LogFileIndex == 0 { //try a fullsync if err := m.fullSync(); err != nil { log.Warn("full sync error %s", err.Error()) return } if m.info.LogFileIndex == 0 { //master not support binlog, we cannot sync, so stop replication m.stopReplication() return } } for { for { lastIndex := m.info.LogFileIndex lastPos := m.info.LogPos if err := m.sync(); err != nil { log.Warn("sync error %s", err.Error()) return } if m.info.LogFileIndex == lastIndex && m.info.LogPos == lastPos { //sync no data, wait 1s and retry break } } select { case <-m.quit: return case <-time.After(1 * time.Second): break } } } return }
func (m *master) runReplication() { m.wg.Add(1) defer m.wg.Done() for { select { case <-m.quit: return default: if err := m.connect(); err != nil { log.Error("connect master %s error %s, try 2s later", m.info.Addr, err.Error()) time.Sleep(2 * time.Second) continue } } if m.info.LogFileIndex == 0 { //try a fullsync if err := m.fullSync(); err != nil { if m.conn != nil { //if conn == nil, other close the replication, not error log.Warn("full sync error %s", err.Error()) } return } if m.info.LogFileIndex == 0 { //master not support binlog, we cannot sync, so stop replication m.stopReplication() return } } for { if err := m.sync(); err != nil { if m.conn != nil { //if conn == nil, other close the replication, not error log.Warn("sync error %s", err.Error()) } return } select { case <-m.quit: return default: break } } } return }
func (c *Conn) handleShowProxy(sql string, stmt *sqlparser.Show) (*Resultset, error) { var err error var r *Resultset switch strings.ToLower(stmt.Key) { case "config": r, err = c.handleShowProxyConfig() case "status": r, err = c.handleShowProxyStatus(sql, stmt) default: err = fmt.Errorf("Unsupport show proxy [%v] yet, just support [config|status] now.", stmt.Key) log.Warn(err.Error()) return nil, err } return r, err }