我尝试使用 pt-online-schema-change 向RDS数据库表的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%
这些工具是否实现了改变表的不同方法?
答案 0 :(得分:3)
在这种情况下,没有什么可以担心的。
根据MySQL Documentation on the SUPER privilege
SUPER权限允许帐户使用CHANGE MASTER TO,KILL 或者mysqladmin kill来杀死属于其他帐户的线程(你 可以随时杀死自己的线程),PURGE BINARY LOGS,配置 使用SET GLOBAL进行更改以修改全局系统变量 mysqladmin debug命令,启用或禁用日志记录,执行 即使启用read_only系统变量,启动和更新也会更新 停止从服务器上的复制,指定任何帐户 存储的程序和视图的DEFINER属性,并使您能够 连接(一次)即使连接限制由 达到max_connections系统变量。
如果启用了二进制日志记录,则创建或更改存储的函数 也可能需要SUPER权限,如第18.7节所述, “存储程序的二进制日志记录”。
禁用数据库会话中语句的二进制日志记录需要SUPER权限。
事实上,根据pt-online-schema-change
- 仓日志
允许二进制日志记录(SET SQL_LOG_BIN = 1)。默认为二进制日志记录 关闭是因为在大多数情况下--tmp-table不需要 复制。此外,在复制中执行联机架构更改 环境需要仔细规划,否则复制可能会被打破; 见“复制”。
由此可以得出结论,这确实是pt-online-schema-change的正常行为。它默认尝试在其会话中禁用二进制日志记录。
尝试以root @ localhost身份运行pt-online-schema-change
。该用户应该所有私人活动。