从EC2实例将二进制日志文件恢复到Amazon MySQL RDS时会出现以下错误。" ERROR 1227(42000)在第8行:访问被拒绝"

时间:2016-06-17 13:59:15

标签: mysql amazon-ec2 amazon-rds

我们正在将Noge云服务器的30GB大小的生产数据库迁移到Amazon MySQL RDS服务器。

为减少生产停机时间,我们尝试在一天内恢复完整的数据库转储文件,在另一天恢复二进制日志文件,以便在Amazon MySQL RDS服务器中恢复数据库。

我们通过移动MySQL转储文件,通过EC2实例恢复了完整转储文件。但是当我们尝试从Amazon EC2实例恢复二进制日志文件时,我们收到以下错误:

  

错误1227(42000)第8行:拒绝访问;你需要(至少   其中一个)此操作的SUPER权限。

注意:我们安装了Google并更改了Amazon MySQL参数log_bin_trust_function_creators=1并重新启动了服务器

但我们仍然面临上述问题。

2 个答案:

答案 0 :(得分:5)

此处的问题是RDS不支持使用SUPPORT_DATABASE来播放日志文件。

第一次在输出中遇到mysqlbinlog语句时,您将获得权限被拒绝错误,因为这些事件是在完全特权的上下文中解释的 - 当事件发生时没有完成权限检查已经预先完成 - 通过要求执行BINLOG '...语句的用户具有BINLOG '...权限 - 你没有得到和不能拥有的RDS,可能是因为它会让你破坏。

但是,无论如何,有一种解决方法,最终可能会更好。

恢复转储文件后,您实际上可以将RDS主服务器连接到RDS之外的MySQL服务器,并暂时使主服务器成为外部数据库的从服务器。它将连接,获取binlog,并像普通slave一样播放它们,几乎实时地将其数据同步到外部主机,直到你关闭外部主机并将应用程序移动到指向RDS机器。

他们引入了此功能,专门用于将实时外部系统迁移到RDS中,停机时间最短。

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.NonRDSRepl.html

https://aws.amazon.com/blogs/aws/migrate-mysql-data-to-amazon-rds-and-back/

答案 1 :(得分:1)

我遇到了同样的问题,我在转储的sql文件中更改了DEFINER id(提到你用来恢复的id)(/ *!50013 DEFINER = RESTOREID @ % SQL安全定义* /

然后它开始工作了!