MySQLで1GBクラスの大きなデータをインポートする時、デフォルトの設定だと「MySQL server has gone away」が出てしまいます。 そこでメモリの設定を変更しましょう。
公式ドキュメント https://dev.mysql.com/doc/refman/5.6/ja/packet-too-large.html
MySQL 5.6 Server およびクライアント間で転送可能なパケットの最大サイズは 1G バイトです。
クライアントとサーバーの両方にそれぞれ max_allowed_packet 変数があるため、大きなパケットを処理する場合は、クライアントとサーバーの両方のこの変数を増やす必要があります
show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
1 row in set (0.03 sec)
4MBに設定されています
16M に設定します
vim /etc/my.cnf.d/my.cnf
[mysqld]
max_allowed_packet = 16M
mysqlリスタート
systemctl restart mysql
mysqlへ接続して直接クエリを流しこみます
set global max_allowed_packet=16777216;
mysql -u USER-NAME -p DB-NAME --max_allowed_packet=16M < dump.sql
これでもエラーが出る場合はそもそも mysqldump のダンプの取り方を変えてみると良いでしょう
mysqldumpではデフォルトで全ての行を1度にINSERTするようなSQL文を吐き出します。
これをやめるオプションが --skip-extended-insert です。これを指定してdumpします。
mysqldump -u USER-NAME -p DB-NAME --skip-extended-insert > dump.sql
mysql -u USER-NAME -p DB-NAME < dump.sql