通过 mysqlbinlog 更新 RDS db:“您需要(至少一个)SUPER 权限”

通过 mysqlbinlog 更新 RDS db:“您需要(至少一个)SUPER 权限”

我们正在将生产站点迁移至 EC2/RDS

请遵循以下说明: http://geehwan.posterous.com/moving-a-production-mysql-database-to-amazon

我已经在生产服务器上设置了基于行的二进制日志记录:

mysqldump --single-transaction --master-data=2 -C -q -u root -p > 备份.sql

然后导入到 RDS 实例。没有任何问题。

由于数据库的大小以及最小的停机时间要求,我必须通过 binlogs 将 ec2 数据库更新到最新数据,但它不允许我这样做。

mysqlbinlog mysql-bin.000004 --start-position=360812488 | mysql -uroot -p -h

上面写着:

错误 1227 (42000) 第 6 行:访问被拒绝;您需要(至少一个)SUPER 权限才能执行此操作

根据 binlog 第 6 行的内容,我的猜测是它是 SQL 备份中的“写入 BINLOG”语句,并且由于 RDS 不支持此功能,因此它无法运行这些语句,或者其他什么,我真的不知道。

请帮忙。

答案1

发生这种情况的可能性最大,因为将命令作为第一个命令mysqlbinlog写入BINLOG输出,并且执行该命令需要SUPER您在 RDS 上没有的权限。

要删除该命令,请使用--base64-output=NEVER选项(注意,它还需要--read-from-remote-server --host=localhost --user username --password)。

但是,克服了这个问题之后,可能还会遇到另一个问题,这次是使用写入输出的@@session命令。它们也需要权限。mysqlbinlogSUPER

我还没有找到更好的方法来sed -i '/SET @@session/d' binlog_dump.sql删除它们然后执行导入 MySQL。

相关内容