我们正在将生产现场移至EC2 / RDS
遵循以下说明: http : //geehwan.posterous.com/moving-a-production-mysql-database-to-amazon
我已经在生产服务器上设置了基于行的二进制日志logging了:
mysqldump –single-transaction –master-data = 2 -C -q -u root -p> backup.sql
然后导入到RDS实例。 没有戏剧。
由于数据库的大小和最小的停机时间要求,我必须通过binlog将ec2 db更新到最新的数据,而且不会让我失望。
mysqlbinlog mysql-bin.000004 –start-position = 360812488 | mysql -uroot -p -h
它说:
错误1227(42000)在第6行:访问被拒绝; 您需要(至less一个)SUPER权限(s)进行此操作
我的猜测是,根据binlog的第6行,是在SQL备份中写入BINLOG语句,而且由于RDS不支持,所以不能运行这些语句,我真的不知道。
请帮忙。
最有可能发生这种情况是因为mysqlbinlog将BINLOG命令写入输出的第一个命令,并且执行该命令需要在RDS上没有的SUPER权限。
要删除该命令,请使用--base64-output=NEVER选项(注意,它也需要--read-from-remote-server --host=localhost --user username --password )。
但是,在解决了这个问题之后,可能会有另一个问题,这次是使用mysqlbinlog写入输出的@@session命令。 他们还需要SUPER权限。
我还没有find更好的方法来使用sed -i '/SET @@session/d' binlog_dump.sql删除它们,然后执行导入到MySQL。