2

我尝试使用pt-online-schema-change向 RDS DB 表的 2 列添加唯一索引,但失败并出现如下错误:

DBD::mysql::db do failed: Access denied; you need (at least one of) the SUPER privilege(s) for this operation [for Statement "SET SQL_LOG_BIN=0"] at /usr/bin/pt-online-schema-change line 4663.

但是使用Oak-online-alter-table,我的桌子正在改变。该过程尚未完成,但我没有看到任何错误,输出如下:

...
-- Copying range (1230004), (1231683), progress: 24%

这些工具是否实现了不同的方法来更改表?

4

1 回答 1

3

在这种情况下,没有什么可真正担心的。

根据MySQL Documentation on the SUPER privilege

SUPER 权限使帐户能够使用 CHANGE MASTER TO、KILL 或 mysqladmin kill 来杀死属于其他帐户的线程(您始终可以杀死自己的线程)、PURGE BINARY LOGS、使用 SET GLOBAL 修改全局系统变量的配置更改、mysqladmin调试命令,启用或禁用日志记录,即使启用了 read_only 系统变量,也执行更新,启动和停止从服务器上的复制,在存储程序和视图的 DEFINER 属性中指定任何帐户,并使您能够连接(一次)甚至如果达到由 max_connections 系统变量控制的连接限制。

如果启用了二进制日志记录,要创建或更改存储函数,您可能还需要 SUPER 权限,如第 18.7 节“存储程序的二进制日志记录”中所述。

禁用数据库会话中语句的二进制日志记录需要 SUPER 权限。

事实上,根据关于pt-online-schema-change

--bin-log

允许二进制日志记录 (SET SQL_LOG_BIN=1)。默认情况下二进制日志是关闭的,因为在大多数情况下 --tmp-table 不需要被复制。此外,在复制环境中执行在线模式更改需要仔细规划,否则复制可能会中断;见“复制”。

由此,您可以得出结论,这确实是 pt-online-schema-change 的正常行为。默认情况下,它试图在其会话中禁用二进制日志记录。

推荐

尝试pt-online-schema-change以 root@localhost 身份运行。该用户应该全部激活。

于 2012-02-16T16:10:00.013 回答