スポンサーリンク

「MySQL]大量のデータをエクスポートするには?

標準のphpMyAdminではできない

phpMyAdminはWEBサーバーに依存するため、Apacheのhttpd.confやphp.iniの設定に依存します。
自鯖なら設定変更で対応可能ですが、戻すのがめんどくさい、または処理中にHttpが無応答になって台無しになったりします。

サーバーで直接コマンドを打つ

私はサーバーでコマンドを打つのは、リスクが高いので苦手なのですが今回ばかりは仕方がありません。

MySQLにログインせず実行してください。
(実施したのはテーブル定義を含まないデータのみです。)

# おすすめコマンド
mysqldump -u root -p \
  --no-create-info \
  --single-transaction \
  --quick \
  --max_allowed_packet=1G \
  db_name | gzip > data_only.sql.gz

効果

  • --single-transaction → ロック最小で安定
  • --quick → メモリに溜めずストリーム処理
  • --max_allowed_packet=1G → 巨大行で落ちるのを防ぐ

211MBほどでしたが数分で終わりました。

「おまけ」インポートコマンド

gunzip -c data_only.sql.gz | mysql -u root -p db_name

さらに安定させるなら

gunzip -c data_only.sql.gz | mysql -u root -p \
  --max_allowed_packet=1G \
  --local-infile=1 \
  db_name