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

(テーブル単位)それでもphpMyAdminでエクスポートがサーバーエラーになってしまう場合の対処法

      2014/11/22

Google or AdMax Promotion(it)

レンタルサーバーを利用していて、phpMyAdminを利用したエクスポートを行って、
Internal Server Errorが出てしまいエクスポートが正常に終了しない場合、
それでもエクスポートを行う必要がある場合に、できる対策(テーブル指定)をご紹介します。

はじめに

レンタルサーバには様々な制約があり、
phpMyAdminを利用したようなエクスポートでは、
Apacheサーバーなどの実行時間制限などでエクスポートが中断されてしまうことがあります。

その際に表示されるのがInternal Server Errorの表示なのですが、
それでも大切なデータは何とかしてエクスポートする必要があるでしょう。

現時点で私の環境では非常にレコード数の多いテーブルが2つあり、
常にそのテーブルのエクスポートでエラーになってしまいます。

将来的にはこのテーブルは削除するつもりではいて、
テーブルをなくしてしまえば一括してエクスポートが行えるはずです。

しかし、これはあくまでもはず。
削除できないデータでエクスポートができなくなる時期は刻一刻と迫っているだけでしょう。

というのも、私のレンタルサーバーの1データベースのサイズ上限が500MBと決められています。
当初はたった500MBか・・・と思っていました。

しかし今回エクスポートを行ってみて思ったのが、
500MBのデータベースサイズにまで肥大化すると、
そもそもサーバーからの引っ越しが現実的ではない状態に達することがわかりました。

おそらく、その頃には1テーブルでさえ、
容易にエクスポートが行えない状態になっているでしょう。

よく、システム開発でOracleなどを利用していてダンプのサイズが、
4Gといった規模にまで肥大化していたことに慣れていたこともあって、
最初は500MBと聞いたときはがっかりしました。

しかし、これがレンタルサーバの現実であり、限界なのだと思います。

30秒の壁

私のレンタルサーバの環境では、
現在30秒でInternal Server Errorが発生するようになっています。
しばらく前までは、1分20~30秒くらいまで実行できていたのですが、
設定が変更されたかはわかりませんが、今は30秒です。

要はphpMyAdminから何かの処理を要求した際に30秒以内に処理を完了しなければ、
その処理は中断されてしまいます。

エクスポートもしかりで、30秒以内に処理が終わる単位で要求する必要があるのです。
※30秒に明確な裏付けがあるわけではありません、あくまでも実測値です。

01_Internal Server Error

Internal Server Error

phpMyAdminにおける小出しバックアップの方法

phpMyAdminのエクスポート方法はいろいろな方法で行えますが、
最初のうちはこのインターフェイスに慣れるまでは、
phpMyAdminのメニュータブをクリックした際の、
表示される対象が異なっていることに気づきませんでした。

phpMyAdminでは現在の選択レベルに応じて、操作対象が変わります。

最上部に表示されているパンくずリストで自分の現在位置がわかります。

phpMyAdminのパンくずリスト表示

phpMyAdminのパンくずリスト表示

常にこれに注意をして操作する必要があります、この現在位置は次のようなものです。

  • ホスト
  • データベース
  • テーブル

こうした現在の操作対象のとして選択しているレベルに応じてエクスポートの設定も変化します。
エクスポート対象がどのように変化するかについては以下でご紹介しています。
phpMyAdminを利用したMySQLデータのエクスポート

ホストを選択した状態でエクスポートを選択すると、
複数のデータベースを1SQLファイルでエクスポートができ、
出力対象をデータベース単位で選択が行えます。

データベースを選択した状態でエクスポートを選択すると、
複数のテーブルを1SQLファイルでエクスポートができ、
出力対象をテーブル単位で選択が行えます。

テーブルを選択した状態でエクスポートを選択すると、
1テーブル内のデータを1SQLファイルでエクスポートします。
出力対象をレコード単位で指定することができます。

出力対象のサイズに合わせて出力単位を選択

サイズ的にもサーバー設定的にも問題のないデータベースのエクスポートでは、
通常はデータベース単位にすべてのテーブルをエクスポートされているでしょう。

私もこれまではそうしてきました。
しかし、今はそうもいきません。

ではどうするのか、データベース単位でテーブルを選択した(除外した)状態で、
分割してエクスポートを行うしかありません。

エクスポートを行いたいデータベースを選択した状態から[エクスポート]をクリックします。

03_データベースのエクスポート[詳細]選択

データベースのエクスポート[詳細]選択

エクスポートをクリックしてすぐに表示される画面は[簡易]画面の為、
[詳細]をクリックして出力対象のテーブルを選択ができるようにします。

 

 

 

04_エクスポート対象テーブルの選択

エクスポート対象テーブルの選択

最下部の[実行する]をクリックすることで、
選択したテーブルが1SQLとしてエクスポートされます。

エクスポートの詳細オプションなどについては、以下でご紹介しています。
(構造編)phpMyAdminを利用したエクスポートオプションと出力の関係

(データ編)phpMyAdminを利用したエクスポートオプションと出力の関係

phpMyAdminを利用したエクスポート・インポートで最も適した設定とは?

エクスポートエラーの現況を別で処理する

今回のケースでいえば、レコード数があまりにも多く、
すべてをエクスポートした際にエラーとなってしまうテーブルを除外して、
エクスポートを行うことで、他の必要なテーブルをエクスポートすることができます。

ここで選択を行わなかったテーブルをエクスポートするには、
同様にエラーとなってしまうテーブルのみを選択してエクスポートします。

この場合、1つのSQLに対して1つのテーブルの構造とデータが、
格納されたファイルが出力されます。

手間は2回必要になってしまいますが、
エクスポートが正常に行えないよりはマシといったところでしょう。

こうしたテーブル単位でのエクスポートでもエラーとなってしまう場合には、
レコード単位でテーブルを分割してエクスポートするしかありません。
(レコード単位)それでも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

プロモーション(btm)

Google or AdMax Promotion (it)

 - MySQL, phpMyAdmin ,

  関連記事