5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS Auroraでダンプしたデータをmysqlにインポートしようとしたらはまった

Posted at

Auroraでダンプしたデータをmysqlにインポートしようとしたらはまった

Aurora (MySQL 5.6.10)で mysqldumpして、そのデータをMySQL 5.7.24でインポートしようとしたら、見慣れないメッセージが出た。

ERROR 1726 (HY000) at line xxx: Storage engine 'InnoDB' does not support system tables. [mysql.columns_priv]

mysql.columns_priv っていうテーブルがInnoDBで、システム用のテーブルにはInnoDBが使えないって言われているっぽい。

Aurora上で下記のクエリを流したら、確かにmysql.columns_priv はInnoDBだった。

.sql
SELECT table_name, engine FROM information_schema.tables WHERE table_schema= 'mysql';

.csv
table_name,engine
aurora_s3_load_history,InnoDB
bin_log_md_table,InnoDB
bin_log_table,InnoDB
columns_priv,InnoDB
db,InnoDB
ddl_log_md_table,InnoDB
ddl_log_table,InnoDB
event,InnoDB
func,InnoDB
general_log,CSV
general_log_backup,CSV
help_category,InnoDB
help_keyword,InnoDB
help_relation,InnoDB
help_topic,InnoDB
innodb_index_stats,InnoDB
innodb_table_stats,InnoDB
metadata_md_table,InnoDB
metadata_table,InnoDB
ndb_binlog_index,InnoDB
plugin,InnoDB
proc,InnoDB
procs_priv,InnoDB
proxies_priv,InnoDB
rds_configuration,InnoDB
rds_global_status_history,InnoDB
rds_global_status_history_old,InnoDB
rds_history,InnoDB
rds_replication_status,InnoDB
rds_sysinfo,InnoDB
relay_log_md_table,InnoDB
relay_log_table,InnoDB
ro_replica_status,InnoDB
servers,InnoDB
slave_master_info,InnoDB
slave_relay_log_info,InnoDB
slave_worker_info,InnoDB
slow_log,CSV
slow_log_backup,CSV
tables_priv,InnoDB
time_zone,MyISAM
time_zone_leap_second,MyISAM
time_zone_name,MyISAM
time_zone_transition,MyISAM
time_zone_transition_type,MyISAM
user,InnoDB

原因

Aurora上でInnoDBになっていて、インポートしようとしたら使えませんって馬鹿なって思って、my.cnfをずっと調べていたけど見当違いだった。

↓のページに「MyISAM ストレージエンジンなど、特定の MySQL の特徴は Amazon Aurora で使用できません。」って書いてあった。

ユーザが作ったテーブルだけではなく、システムで作られるテーブルも例外ではない模様。

ダンプデータをインポートする際に下記のクエリが走ってしまう。

DROP TABLE IF EXISTS `columns_priv`;

これをやってしまうとmysqlが起動できなくなってしまう

解決法

mysqldumpのオプションで"--skip-add-drop-table"というのがあるので、それを付ければ"mysql.columns_priv"はdropされなくなるので、エラーは出なくなる。

ただし"mysql.columns_priv"をCREATE TABLE するクエリは存在するので、インポートする際にエラーは出てしまう。
なのでインポート時に"-f"オプションを付けてエラーを無視してあげる。

無害なはずだけど、正確にやるならmysqudumpの時にDBを指定したほうが良いように思う。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?