繁体   English   中英

导入时出现MySQL / Amazon RDS错误

[英]MySQL/Amazon RDS error on import

我正在尝试将所有数据库从500Gb RDS实例转储到较小的实例(100Gb)中。 我保存了很多用户权限,因此需要转储mysql表。

mysqldump -h hostname -u username -ppassword --all-databases > dump.sql

现在,当我尝试将数据上传到新实例时,出现以下错误:

mysql -h hostname -u username -ppassword < dump.sql`
ERROR 1044 (42000) at line 2245: Access denied for user 'staging'@'%' to database 'mysql'

我只是使用数据库快照来完成此操作,但是我的实例较小。

作为一个健全性检查,我尝试将数据转储到原始实例中,但是遇到了相同的错误。 有人可以建议我在这里做什么吗? 谢谢!

您可能需要分别进行数据库处理,或者至少从现有文件中删除mysql模式(也许使用grep查找USE database;的行数USE database;然后使用sed修剪出麻烦的部分,或参见下文),然后生成一个不包含表结构或MySQL模式中的专有RDS触发器的转储文件。

我还没有尝试将完整的mysql模式还原到RDS实例上,但是我可以肯定地看到RDS中的自定义设置和缺少SUPER特权的地方会出现问题...但是,似乎mysqldump上的这些选项应该可以帮助您关闭,至少。

mysqldump --no-create-info      # don't try to drop and recreate the mysql schema tables
          --skip-triggers       # RDS has proprietary triggers in the mysql schema
          --insert-ignore       # write INSERT IGNORE statements to ignore duplicates
          --databases mysql     # only one database, "mysql"
          --skip-lock-tables    # don't generate statements to LOCK TABLES/UNLOCK TABLES during restore
          --single-transaction  # to avoid locking up the source instance during the dump

如果仍然过于激进,那么您将需要转储仅转储特定表中需要保留其内容的行(“用户”和其他授权表)。

以下内容不提供任何担保,但这是我收藏中的一份。 这是一种单行代码,它读取“ old_dumpfile.sql”并写入“ new_dumpfile.sql” ...但是,如果在同一行上看到带有mysql的USECREATE DATABASE语句,则关闭输出,然后重新打开下次在没有mysql的情况下再次出现这样的语句。 如果转储文件中还包含DROP DATABASE语句,则需要对此进行修改,或者可以使用--skip-add-drop-database生成新的转储--skip-add-drop-database

通过该命令运行现有的转储文件,实际上应该仅从该文件中删除mysql模式,从而使您可以轻松地手动进行手动还原,然后让其余的数据库数据更顺畅地流入。

perl -pe 'if (/(^USE\s|^CREATE\sDATABASE.*\s)`mysql`/) { $x = 1; } elsif (/^USE\s`/ || /^CREATE\sDATABASE/) { $x = 0; }; $_ = "" if $x;' old_dumpfile.sql > new_dumpfile.sql

我想您可以尝试使用工作台 那里有一个迁移功能,首先创建较小的实例(100GB),然后使用该迁移功能将500GB迁移到100GB,看看是否可行。

我有太多的RDS MySQL访问被拒绝问题。 因此,在RDS上运行以下命令是我的出路:

GRANT ALL ON `%`.* to '<type_the_usernamne_here>'@'%';

我不确定这对您的情况是否有帮助。 但这一直是我的救星。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM