💽
Mysqlコマンドのデータエクスポート中の強制終了を解決!メモリー不足をオプションで解消する方法
こんにちは、かずおです。
Mysqlコマンドを使ってSELECT文の結果をファイルに出力する際に、メモリ不足で強制終了してしまう問題を、オプションを使って解決できる方法があります。今回はその方法について共有します。
解決方法
Mysqlコマンドを使って、SELECT文の出力結果をファイルに出力する方法は次の通りです。
mysql -u [ユーザー名] -p [データベース名] -e 'SQL文' > [ファイルパス]
しかし、大量のデータを処理する場合、次のように強制終了してしまうことがあります。
mysql -u kazuo_user -p kazuo_db -e 'select * from kazuo_tbl' > /home/kazuo/tmp/
強制終了
このような問題の原因としては、以下のことが考えられます。
- サーバーのリソース不足
- クエリのタイムアウト
- Mysqlサーバー自体のクラッシュ
- 構文エラーなどのクエリの問題
サーバーのリソース不足が原因の場合は、メモリの増強やディスクの拡張が必要です。ただし、メモリ不足が原因の場合は、以下のオプションを使うことで解決できます。
mysql -q
mysql --quick
このオプションを使うと、全結果セットをメモリ内でバッファリングせずに、サーバーから1行ずつ結果を取得します。これにより、メモリ不足による強制終了を防ぐことができます。
引用元:MySQL 公式ドキュメント
Discussion