我一直在尝试将现有数据库从在EC2上运行的MySQL迁移到新的Amazon RDS实例(进行实验以查看是否可以迁移)。到目前为止,进展并不顺利。在设置复制(此处的说明)之前,我陷入了最初的导入。
我已经按照说明准备了RDS实例,并且可以使用mysql从EC2实例连接到它。我将mysqldump命令运行为:
mysqldump --master-data --databases db1 db2 > dump.sql
然后尝试通过以下方式将其上传到RDS:
mysql -h RDSHost -P 3306 -u rdsuser --password=rdspassword < dump.sql
第一个问题是转储的第22行:
将MASTER更改为MASTER_LOG_FILE ='mysql-bin.000002',MASTER_LOG_POS = 106;
此行导致错误ERROR 1227 (42000) at line 22: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
。没问题,只需注释掉该行,并希望以后通过mysql.rds_set_external_master()对其进行修复。重试了上传,并收到了非常类似的错误:ERROR 1227 (42000) at line 7844: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
。第7844行周围的部分如下所示:
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`dev`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `jos_contributor_ids_view` AS select `jos_resource_contributors_view`.`uidNumber` AS `uidNumber` from `jos_resource_contributors_view` union select `jos_wiki_contributors_view`.`uidNumber` AS `uidNumber` from `jos_wiki_contributors_view` */;
通过注释掉前两行,并在第三行中添加“ CREATE”,我可以跳过这一行。但也有吨这样的部分。没有进行所有编辑,有办法解决这个问题吗?是否mysqldump
希望不产生任何需要SUPER特权的选项?
似乎很多人都遇到过类似的问题,例如必须sed
针对mysqldump / mysqlbinlog的输出运行!我也将在AWS论坛上发布-确实,我认为RDS应该具有从mysqldump导入的更宽容的方式,或者可以对现有数据库运行以创建带有RDS安全性的转储的特定工具。只是想知道是否有人有其他食谱或技巧可能对您有所帮助。
谢谢,
戴夫
--masterdata=2
。然后,该行将在转储中被注释掉。
log_bin_trust_function_creators
参数设置为1,但仍然得到了同样的错误,在线路7844.