首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减少元数据锁定

如何减少元数据锁定
EN

Database Administration用户
提问于 2015-04-28 02:48:35
回答 1查看 735关注 0票数 8

MyDumper 0.6.1添加一个新选项--use-savepoints。从手册来看,这意味着:

使用保存点减少元数据锁定问题,需要超级特权

我不明白。它如何“减少元数据锁定问题”,以及为什么它需要“超级特权”?正如我认为的那样,元数据对于防止其他DDL修改表结构是必不可少的。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2015-11-20 23:07:09

为了找到这个问题的答案,我不得不在mydumper的源代码中做一些调查。如果您查看mydumper的实际源代码

您将在第415行中发现以下内容,作为进程队列的一部分:

代码语言:javascript
复制
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中使用--使用--保存点需要关闭MySQL bin日志。我在我自己的MariaDB服务器上尝试了这一点,它仍然使用MySQL作为基本DBMS,并且在使用非管理员帐户时出现了以下错误:

MariaDB (无)> SET SQL_LOG_BIN = 0;错误1227 (42000):访问被拒绝;此操作需要(至少一种)超级特权(S)

根据我阅读的实际代码并在我自己的MySQL服务器上测试这个条件,我的理解是您需要“超级特权”,因为mydumper将在它运行时禁用对binlog的日志记录。这是文档中提到的超级程序“启用或禁用日志记录”功能的一部分。

关于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。

我希望这能给我更多的洞察力。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/99007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档