Percona工具包与Openark Kit。架构更改

时间:2012-02-08 02:38:03

标签: mysql mysql-management amazon-rds percona

我尝试使用 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%

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

1 个答案:

答案 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。该用户应该所有私人活动。