arkdb / inception

一个集审核、执行、备份及生成回滚语句于一身的MySQL自动化运维工具
GNU General Public License v2.0
1.86k stars 1.32k forks source link

目标mysql 设置为autocommit=0时,执行无法成功 #66

Open Mount565 opened 6 years ago

Mount565 commented 6 years ago

当目标mysql关闭autocommit时,无法执行成功。备份服务器关闭autocommit时无法备份成功。

clipboard

inception 在备份状态挂起。我猜是没有commit, 不产生binlog, 备份功能在等待dump binlog 。

Mount565 commented 6 years ago

我猜不会有人回复。。。。

slieer commented 6 years ago

我回答了, 但不能解决你的问题, 国内开源项目, 不好做啊! 观念和生态问题。中兴事件能不能引起大家的警醒呢?!

hanchuanchuan commented 6 years ago

我没有测试是否是因为autocommit的原因,如果确定是这样的话,可以按如下方式解决: 可以修改源码sql/sql_parse.cc文件,在函数mysql_check_binlog_format最后return之前添加

    sprintf(set_format,"set session autocommit=on;");
    if (mysql_real_query(mysql, set_format, strlen(set_format)))
    {
        my_message(mysql_errno(mysql), mysql_error(mysql), MYF(0));
        DBUG_RETURN(ER_NO);
    }

    DBUG_RETURN(false);

按上述方法可以添加各种操作前的set项设定,须注意set范围为session。

Mount565 commented 6 years ago

好的,有空试一下,谢谢