MySQL-Syncer icon indicating copy to clipboard operation
MySQL-Syncer copied to clipboard

retry connect to master

Open miuc opened this issue 10 years ago • 9 comments

mast slave 启动成功后,slave 日志里一直显示: <thread : 140337872852736> retry connect to master

有两个地方不太清楚:

  • 我看到slave和master的配置里都是监听1919端口,这是为什么?应该是不一样的吗,如果不一样的话,slave 又是从哪里知道master的端口。
  • 本地telnet 127.0.0.1 1919 端口成功,但是master log一直显示: [ERROR] <thread : 139641752966912> get dumpcmd failed 不太清楚他们之间发生了什么。。

miuc avatar Nov 24 '14 08:11 miuc

不是同一个端口,一个是连接

Terry-Mao avatar Dec 04 '14 09:12 Terry-Mao

get dumpcmd failed 可能是配置文件错误,能否提供下配置文件,和master.info

Terry-Mao avatar Dec 04 '14 09:12 Terry-Mao

请问哪里的master.info 文件 ,说明文档里面没有提及到阿?

jucehrx avatar Mar 23 '15 04:03 jucehrx

同样是出现 [ERROR] get dumpcmd failed 将 rs_request_dump.c 中的

/* get filter tables */
if((p = rs_strchr(p, '\n')) == NULL) {
    goto free;
}

//在这里打印p if(*(++p) != ',') { goto free; }

标志位置打印p值出来,发现前面带多了个换行符,改为

/* get filter tables */
if((p = rs_strchr(p, '\n')) == NULL) {
    goto free;
}
++p;   //将换行符略过
rs_log_error(RS_LOG_ERR, 0, "get slave.info before2");
if(*(++p) != ',') {
    goto free;
}

程序可以运行;之后继续测试 ,出现

2015-03-23 15:06:31 [ERROR] <thread : 139845352974080> unknown event, 30 2015-03-23 15:06:31 [INFO] <thread : 139845352974080> open a new binlog = /var/lib/mysql/binlog/mysql-bin.000003 2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> ========== event header ============= server id : 1 event type : 16 event length : 31 event next position : 1146 dump position : 1146 data length : 12

2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> ========== XID_EVENT ============== 2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> tran : 0 tran id : 39 2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> send dump file = /var/lib/mysql/binlog/mysql-bin.000003, send dump pos = 1146, tran = 0, sent = 0, flush = 0

这样的错误,定位代码,应该是rs_read_binlog.c 里面对mysql的binlog解释出了问题:

    /* HEADER */
    if((r = rs_binlog_header_handler(rd)) != RS_OK) {
        goto free;
    }    

    idx = rd->binlog_info.t - '\0';

    if(idx == 0 || idx > RS_BINLOG_EVENT_NUM) {  // idx值为30 大于 27
        rs_log_error(RS_LOG_ERR, 0, "unknown event, %u", idx);
        goto free;
    }

我的环境是fedora20 mysql version 5.6.23 具体如何处理 望指教。

jucehrx avatar Mar 23 '15 07:03 jucehrx

不是说不支持5.6吗?

xushan avatar Aug 21 '15 02:08 xushan

我也越到了这个问题,这个问题貌似是文件rs_request_dump.c:140这个地方goto free。这个地方的p有可能是"\n\n,test.test,"。按照代码逻辑应该是"\n,test.test,"。这个地方的逻辑是否应该改一下?

chaohona avatar Aug 26 '15 08:08 chaohona

多谢反馈

Terry-Mao avatar Sep 14 '15 02:09 Terry-Mao

同样是出现 [ERROR] get dumpcmd failed 将 rs_request_dump.c 中的

/* get filter tables */
if((p = rs_strchr(p, '\n')) == NULL) {
    goto free;
}

//在这里打印p if(*(++p) != ',') { goto free; }

标志位置打印p值出来,发现前面带多了个换行符,改为

/* get filter tables */
if((p = rs_strchr(p, '\n')) == NULL) {
    goto free;
}
++p;   //将换行符略过
rs_log_error(RS_LOG_ERR, 0, "get slave.info before2");
if(*(++p) != ',') {
    goto free;
}

程序可以运行;之后继续测试 ,出现

2015-03-23 15:06:31 [ERROR] <thread : 139845352974080> unknown event, 30 2015-03-23 15:06:31 [INFO] <thread : 139845352974080> open a new binlog = /var/lib/mysql/binlog/mysql-bin.000003 2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> ========== event header ============= server id : 1 event type : 16 event length : 31 event next position : 1146 dump position : 1146 data length : 12

2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> ========== XID_EVENT ============== 2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> tran : 0 tran id : 39 2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> send dump file = /var/lib/mysql/binlog/mysql-bin.000003, send dump pos = 1146, tran = 0, sent = 0, flush = 0

这样的错误,定位代码,应该是rs_read_binlog.c 里面对mysql的binlog解释出了问题:

    /* HEADER */
    if((r = rs_binlog_header_handler(rd)) != RS_OK) {
        goto free;
    }    

    idx = rd->binlog_info.t - '\0';

    if(idx == 0 || idx > RS_BINLOG_EVENT_NUM) {  // idx值为30 大于 27
        rs_log_error(RS_LOG_ERR, 0, "unknown event, %u", idx);
        goto free;
    }

我的环境是fedora20 mysql version 5.6.23 具体如何处理 望指教。

你好,想请教一个这个问题,请移步:https://github.com/Terry-Mao/MySQL-Syncer/issues/23(抱拳)

GaoZiqiang avatar Aug 31 '21 14:08 GaoZiqiang

同样是出现 [ERROR] get dumpcmd failed 将 rs_request_dump.c 中的

/* get filter tables */
if((p = rs_strchr(p, '\n')) == NULL) {
    goto free;
}

//在这里打印p if(*(++p) != ',') { goto free; }

标志位置打印p值出来,发现前面带多了个换行符,改为

/* get filter tables */
if((p = rs_strchr(p, '\n')) == NULL) {
    goto free;
}
++p;   //将换行符略过
rs_log_error(RS_LOG_ERR, 0, "get slave.info before2");
if(*(++p) != ',') {
    goto free;
}

程序可以运行;之后继续测试 ,出现

2015-03-23 15:06:31 [ERROR] <thread : 139845352974080> unknown event, 30 2015-03-23 15:06:31 [INFO] <thread : 139845352974080> open a new binlog = /var/lib/mysql/binlog/mysql-bin.000003 2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> ========== event header ============= server id : 1 event type : 16 event length : 31 event next position : 1146 dump position : 1146 data length : 12

2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> ========== XID_EVENT ============== 2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> tran : 0 tran id : 39 2015-03-23 15:06:31 [DEBUG] <thread : 139845352974080> send dump file = /var/lib/mysql/binlog/mysql-bin.000003, send dump pos = 1146, tran = 0, sent = 0, flush = 0

这样的错误,定位代码,应该是rs_read_binlog.c 里面对mysql的binlog解释出了问题:

    /* HEADER */
    if((r = rs_binlog_header_handler(rd)) != RS_OK) {
        goto free;
    }    

    idx = rd->binlog_info.t - '\0';

    if(idx == 0 || idx > RS_BINLOG_EVENT_NUM) {  // idx值为30 大于 27
        rs_log_error(RS_LOG_ERR, 0, "unknown event, %u", idx);
        goto free;
    }

我的环境是fedora20 mysql version 5.6.23 具体如何处理 望指教。

原因出在mysql的版本上,作者的MySQL版本是5.6以下的。5.5和5.5以上的MySQL的事件类型差别很大,以mysql5.7为例,事件id为30时,表示WRITE写事件,而作者源码中事件类型最多只有27种,所以当事件类型大于27时会出问题,这边是原因所在。

GaoZiqiang avatar Sep 01 '21 13:09 GaoZiqiang