概要
特定のログを埋め込んで抽出してSQL化して適当なDBとテーブル作ってSQL流してクエリで解析できるように対応を進めていたところ、大量のログ&sqlファイル1つ数百MBという結果になり、ローカルでは対応厳しいためRDSに対応していたところ色々とハマったまとめです。
環境
- RDS - MySQL Community 5.6.40
問題
調べつつ次の通り作業を進めていたところ、タイトルのエラーでハマりさらに調べるとAWSコンソール上で作業すれば良いと分かった。
$ mysql dev_analysis -h staging.xxxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 33066 -u gremito -p < ~/sqls/xxxxxxxxxx.sql
Enter password:
ERROR 2006 (HY000) at line 24: MySQL server has gone away
$ mysql -h staging.xxxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 33066 -u gremito -p
mysql> show variables;
(略)
| max_allowed_packet | 4194304
(略)
mysql> set global max_allowed_packet = 512000;
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
mysql> show grants;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for gremito@% |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'bananaore'@'%' IDENTIFIED BY PASSWORD <secret> WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
やったこと
パラメータグループからmax_allowed_packet
の値を変更しているとエラーになり、原因はデフォルトを変更することができず、さらにデフォルトからはコピーを作ることもできないため新しくパラメータグループを作り、max_allowed_packet
の値を変更&保存。
パラメータグループの変更は、データベースを起動していないと変更できないようで、変更後は再起動が必要。
再起動後、max_allowed_packet
の値が変わっていることを確認。
mysql> show variables;
(略)
| max_allowed_packet | 512000
(略)