頑張らない!でも諦めない!必死にならずにええかげん

phpMyAdminでMySQLエクスポートが途中で切れる場合の対応策

      2014/11/22

Google or AdMax Promotion(it)

MySQLのデータをphpMyAdminを利用して、
レンタルサーバからエクスポート(Export)している際に、
エクスポートしたファイルが途中で切れてしまう場合があります。
途中で切れてしまう原因に対しての対策のご紹介です。

はじめに

私はサイトをwordpressで運営しています。
レンタルサーバ上に設置して運営しているのですが、
ローカル環境ではない場合、データベースのエクスポートも、
コマンドからのダンプなどが利用できず、phpMyAdminで行うことになります。

このphpMyAdminによるエクスポートは、
大きなテーブルなどには向いていないなどという情報をよく目にします。

遭遇した症状

phpMyAdminを使ってデータベース内のすべてのテーブルを
エクスポートをクリックし、いつも通りにエクスポートをしていました。
ブラウザのダウンロード的には正常に終了しているように振る舞われます。

ここでエクスポートしたデータをローカル環境にインポートしてみて、
目を疑う状態になっていました。
テーブルが後半ごっそりと抜け、インポートされていないのです。

01_移行前と移行後のテーブル状態

移行前と移行後のテーブル状態

エクスポートされたSQLファイルのサイズもまちまちで、
終了したタイミングによって異なっています。

02_エクスポートしたSQLファイルサイズ違い

エクスポートしたSQLファイルサイズ違い

エクスポートされたSQLファイルを直接開いて確認してみると、
案の定、後半が出力されていません。

03_エクスポートした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データをサーバー上にエクスポートする

プロモーション(btm)

Google or AdMax Promotion (it)

総括

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.によってライセンスされています。

*本ページ内に記載されされた各社ブランド、サービス名、商標、登録商標については、
各社ブランドのロゴや商標等に関する帰属についてをご確認ください


最後までお読みいただきありがとうございました。
アルゴリズン


役に立ったと思っていただけたら、以下からシェア頂けたら幸いです^^

QRコードからもこのURLを開けます。

Pitta Promotion

アイキャッチ画像に利用させて頂いております、各社ブランドのロゴやシンボルに関しては、
各社ブランドのロゴや商標等に関する帰属についてをご確認頂けますようお願い致します。
ロゴの使用等に関する苦情・ご意見等がございましたら管理者までご連絡ください。

AdMax Promotion

カテゴリ
すべて展開 | すべて省略

Rakuten Promotion

 - MySQL, phpMyAdmin, WordPress, 同期・シンク ,

  関連記事