Answers:
我必须对mydumper的源代码进行一些挖掘才能找到此问题的答案。如果您查看mydumper 的实际源代码:
您将从第415行开始以下内容作为流程队列的一部分:
if(use_savepoints && mysql_query(thrconn, "SET SQL_LOG_BIN = 0")){
g_critical("Failed to disable binlog for the thread: %s",mysql_error(thrconn));
exit(EXIT_FAILURE);
}
这表明在mydumper中使用--use-savepoints需要关闭MySQL bin日志的功能。我在自己的MariaDB服务器上尝试了此操作,该服务器仍然使用MySQL作为基本DBMS,并且在使用非管理员帐户时收到以下错误:
MariaDB [(无)]> SET SQL_LOG_BIN = 0; 错误1227(42000):访问被拒绝;您需要(至少其中一种)SUPER权限才能执行此操作
从我阅读的实际代码并在我自己的MySQL服务器中测试此条件的结果来看,我的理解是您需要“超级权限”,因为mydumper将在运行时禁用对binlog的日志记录。这是DOCS中提到的SUPER的“启用或禁用日志记录”功能的一部分。
有关binlog的更多具体信息,请点击此处:
http://dev.mysql.com/doc/refman/5.6/en/set-sql-log-bin.html
就保存点而言:
http://dev.mysql.com/doc/refman/5.6/en/savepoint.html
阅读完手册和此错误报告后,如果释放了保存点,它们似乎将释放正在处理的表上的锁定,这可以防止锁定问题,这种问题在MySQLdump上早已出现在MySQL 5.5上。
我希望这能使我对mydumper工具有更多的了解。