我们正在将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
并重新启动了服务器。
但我们仍然面临上述问题。
答案 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安全定义* /
然后它开始工作了!