代码之家  ›  专栏  ›  技术社区  ›  Brian

在转储文件中没有“SET GLOBAL…”的mysqldump

  •  0
  • Brian  · 技术社区  · 2 年前

    我正在尝试将mysql转储文件恢复到AWS RDS mysql实例。

    我用来恢复转储文件的命令是

    mysql --user=${DB_USER} --password=${DB_PASSWORD} --default-character-set=utf8 --host=${target_rds_endpiont} < dumppped_file.sql
    

    此命令会生成以下错误:

    ERROR 1227 (42000) at line 14: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
    

    转储文件的第14行是 /*!50606 SET GLOBAL INNODB_STATS_AUTO_RECALC=OFF */;

    有没有任何方法可以使用mysqldump创建一个不包含 SET GLOBAL .... ?

    因为 INNODB_STATS_AUTO_RECALC 存储在RDS实例的参数组中。从转储文件恢复时,我不需要这个。

    This docuemnt 没有解决我的错误的方法。

    我在的文档中找不到任何解决方案 man mysqldump 任何一个

    0 回复  |  直到 2 年前
        1
  •  0
  •   Nicolas    2 年前

    您可以使用此命令从转储文件中删除第14行,使其能够继续。确保在数据库参数组设置中将INNODB_STATS_AUTO_RECALC临时设置为0

    awk 'NR==14 { print "" ; next } 1' backup-file.sql > new-backup-file.sql
    

    如果文件很大,将需要很长时间