phpMyAdminでMySQLエクスポートが途中で切れる場合の対応策
2014/11/22
MySQLのデータをphpMyAdminを利用して、
レンタルサーバからエクスポート(Export)している際に、
エクスポートしたファイルが途中で切れてしまう場合があります。
途中で切れてしまう原因に対しての対策のご紹介です。
はじめに
私はサイトをwordpressで運営しています。
レンタルサーバ上に設置して運営しているのですが、
ローカル環境ではない場合、データベースのエクスポートも、
コマンドからのダンプなどが利用できず、phpMyAdminで行うことになります。
このphpMyAdminによるエクスポートは、
大きなテーブルなどには向いていないなどという情報をよく目にします。
遭遇した症状
phpMyAdminを使ってデータベース内のすべてのテーブルを
エクスポートをクリックし、いつも通りにエクスポートをしていました。
ブラウザのダウンロード的には正常に終了しているように振る舞われます。
ここでエクスポートしたデータをローカル環境にインポートしてみて、
目を疑う状態になっていました。
テーブルが後半ごっそりと抜け、インポートされていないのです。
エクスポートされたSQLファイルのサイズもまちまちで、
終了したタイミングによって異なっています。
エクスポートされたSQLファイルを直接開いて確認してみると、
案の定、後半が出力されていません。
データの多いテーブルの途中で出力が終了され、
バックアップのデータが欠損してしまっていました。
この症状。
レンタルサーバからダウンロードして安心安心と、
バックアップが終わったと思い込んでしまう為、厄介です。
実際にエクスポートしたデータを、ローカルにインポートしてみて、
初めてレコードが足りなかったり、テーブルがごっそりなかったりという、
wordpress的にみたら破壊された状態でインポートが終了します。
※普通は障害復旧してみて初めてデータが足りないことに気付くのですが、
こうなったらもう悲劇ですね^^;
原因はどこにあるのか?
php.iniの設定をさまざま変更して検証を行ってみましたが、
このダウンロードが中断される症状は、Apache側の設定であるように感じます。
私の利用しているレンタルサーバーでは、
php.iniの設定は認められているのですが、httpd.confの編集はできません。
サーバーの詳細な情報も知る由はないのですが、
この切断の症状はエクスポートを開始してから、約1分20秒ほど経過した辺りで発生します。
何度、エクスポートしても同じです。
念のため、各テーブルごとにエクスポートしたものを、
ローカル環境のMySQLに対してインポートし再現したデータを、
同じようにエクスポートしてみると正常に終了します。
通信によるものかサーバー設定によるものか、何らかの外的要因が原因であると思います。
Apacheのタイムアウト関連かとは思いますが。
対応策
不要なテーブルのデータは捨てる
今回、エラーとなった原因のテーブルは、
statpressというアクセス解析のプラグインが利用するテーブルです。
データ数は315,503レコード程度です。
また他に404 Redirectedというプラグインのテーブルでも、
ログが63,088レコード存在していました。
データ数自体は大したことないとは思うのですが、これが原因になっています。
こうしたアクセス解析やログのデータは、
一昔前であればごみとして捨てられるものでした。
今回もこうしたデータを含まないようにバックアップすれば、
とりあえず必要なデータはバックアップできたでしょう。
昨今のビックデータの情報としてこうしたログも有用なものとなってきていますので、
この辺は後で活用できるデータであれば、残す必要はあると思います。
エクスポートをテーブルごとに分割
一番手っ取り早いのは、テーブルごとに分割して、
複数回に分けてエクスポートを行うことでしょう。
しかしこの方法でも、データ数の多いテーブルの場合には、
結局最後まで出力されず、中断してしまっていました。
このことからテーブルを分割したからといって、
将来的にも問題が発生しないとは言えない状態です。
しかもデータの欠損はある日突然起きているということになります。
エクスポートファイルをダウンロードしない
phpMyadminにはデータをエクスポートする際に、
ローカルに対してダウンロードする方法のほかに、
サーバー上に保存する方法を選択することができます。
エクスポートするファイルをサーバー上にエクスポートし、
そのエクスポートファイルをFTPでダウンロードすることで、
phpMyAdminを利用してMySQLのデータを、
途切れることなくエクスポートすることができるようになります。
phpMyAdminでMySQLデータをサーバー上にエクスポートする
総括
phpMyAdminを利用してエクスポートができない場合に、
テーブルごとに分割してダウンロードするといった対策が多くみられます。
また、HTTPは不安定だからSSHで接続して・・・といった情報も見られます。
しかし共用のレンタルサーバーではSSHも利用できない場合が多いですし、
テーブルごとにエクスポートするのでは、
おそらく月に1回バックアップを取れば頑張っているほうでしょう。
まぁ、続きませんよね・・・。
でもいつ遭遇するかもわからないサーバー障害に備えて、
自分のデータ(資産)は自分で守る。
そういう姿勢でしっかりとバックアップしていきたいものです。
こうしたサーバー上でエクスポートをするようにした場合でもエラーが発生して、
正常にエクスポートを終了することができない場合には、
以下の方法を選択することも、一つの方法です。
(テーブル単位)それでもphpMyAdminでエクスポートがサーバーエラーになってしまう場合の対処法
(レコード単位)それでもphpMyAdminでエクスポートがサーバーエラーになってしまう場合の対処法
MySQLはOracle Inc.による著作物です。
MySQLはFree Software Foundation, Inc.によってGPL Licenseでライセンスされています。
phpMyAdminはphpMyAdmin devel teamによる著作物です。
phpMyAdminはGNU General Public License, version 2.によってライセンスされています。
関連記事
-
-
Google™AdSenseポリシーを準拠した自ページビューに対する対応
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
22.Beautiful Math-Jetpack by WordPress.com
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
19_02.音楽プレーヤー表示には、Jetpackのaudioショートコード埋め込み
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
Gmail™サブメールアドレス活用して複数メールアドレスをショッピングカートで利用
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
Reddit™への共有をJetpack by WordPress.comで行う動作
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
Jetpackのwordpress.com連携でエラーは競合が原因だった
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
Twitter™ タイムラインウィジェットをJetpackを利用して表示する
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
WordPress標準機能を利用してメール投稿する方法と設定
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
phpmyadminダウンロードが始まらない時の対処
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
-
WelCart専用テーマPayPal Vermilionのインストールと有効化手順
Google or AdMax Promotion(it) 禁断の機能がau公式 …