(レコード単位)それでもphpMyAdminでエクスポートがサーバーエラーになってしまう場合の対処法
2014/11/22
レンタルサーバーを利用していて、phpMyAdminを利用したエクスポートを行って、
Internal Server Errorが出てしまいエクスポートが正常に終了しない場合、
それでもエクスポートを行う必要がある場合に、できる対策(レコード指定)をご紹介します。
はじめに
レンタルサーバには様々な制約があり、
phpMyAdminを利用したようなエクスポートでは、
Apacheサーバーなどの実行時間制限などでエクスポートが中断されてしまうことがあります。
その際に表示されるのがInternal Server Errorの表示なのですが、
それでも大切なデータは何とかしてエクスポートする必要があるでしょう。
こうした制約はレンタルサーバの現実であり、限界なのだと思います。
30秒の壁
私のレンタルサーバの環境では、
現在30秒でInternal Server Errorが発生するようになっています。
しばらく前までは、1分20~30秒くらいまで実行できていたのですが、
設定が変更されたかはわかりませんが、今は30秒です。
要はphpMyAdminから何かの処理を要求した際に30秒以内に処理を完了しなければ、
その処理は中断されてしまいます。
エクスポートもしかりで、30秒以内に処理が終わる単位で要求する必要があるのです。
※30秒に明確な裏付けがあるわけではありません、あくまでも実測値です。
phpMyAdminにおける小出しバックアップの方法
phpMyAdminのエクスポート方法はいろいろな方法で行えますが、
最初のうちはこのインターフェイスに慣れるまでは、
phpMyAdminのメニュータブをクリックした際の、
表示される対象が異なっていることに気づきませんでした。
phpMyAdminでは現在の選択レベルに応じて、操作対象が変わります。
最上部に表示されているパンくずリストで自分の現在位置がわかります。
常にこれに注意をして操作する必要があります、この現在位置は次のようなものです。
- ホスト
- データベース
- テーブル
こうした現在の操作対象のとして選択しているレベルに応じてエクスポートの設定も変化します。
エクスポート対象がどのように変化するかについては以下でご紹介しています。
phpMyAdminを利用したMySQLデータのエクスポート
この出力方法での最終手段は、もうレコード単位でのエクスポートしかありません。
テーブル内のデータを複数に分けて、エクスポートを行います。
レコード指定のエクスポート
通常はデータベース単位のエクスポートを行って、
インポートの際にはバッサリとデータベースを削除して、
全データのインポートという手順を取られている方も多いでしょう。
しかし、このレコード単位でのエクスポートインポートでは、
既存のテーブルを残しつつ、
1-1000レコードのインポート、1001-2000レコードのインポートという手順を
順次行っていく必要があります。
そうした時には、エクスポートの方法にも少し気を使う必要があります。
構造に対してはIF NOT EXISTSを有効化
データを分割してエクスポートを行う際には、
テーブル構造の生成処理は初回のみ行える状態にしておく必要があります。
既存にテーブルが存在しない場合には、生成するがそれ以外は生成しないといった感じです。
当然ですがテーブル構造の削除オプションは必要ありません。
ダンプする際のコマンドは[REPLACE]コマンドを利用するように変更します。
エクスポートの詳細オプションなどについては、以下でご紹介しています。
(構造編)phpMyAdminを利用したエクスポートオプションと出力の関係
(データ編)phpMyAdminを利用したエクスポートオプションと出力の関係
phpMyAdminを利用したエクスポート・インポートで最も適した設定とは?
出力対象の指定
上記の設定にて、最後は出力対象とするレコードの指定を行います。
全体のレコード数をどのくらいのレコード数で分割するかという点においては、
サーバー側の制約(制限時間など)に合わせて、
正しく出力を行うことができるレコード数で分割して出力してください。
この出力行数の設定画面は注意が必要で、
行数を入力しただけではラジオボタンは選択されません。
意識的にクリックする必要があります。
私の場合は、863,989行(MySQL上で214.9 MiB)のテーブルを、
サーバー上にエクスポートした際に、400,000行のエクスポートで失敗し、
200,000行のエクスポートで正常処理完了といったところです。
この辺の目安は一括エクスポートをした結果で、
生成されたSQLファイルのサイズを確認するとなんとなくわかります。
私の環境の場合には、
40万行の出力サイズがエラー終了で102MB(エラー時はこのサイズ近辺)
20万行の出力サイズが正常終了で58MB
単純計算で40万行はおよそ、116MB程度になっていたと想定できます。
よって、30万行でも一回で出力は可能だと思われます。
切りが悪いので25万行単位で出力すれば、
常に出力が終了するだろうといった感じです。
しかし、86万行を25万単位でとなると、
1テーブルのエクスポートに4回の処理が必要ということになります。
結果、こんな感じでエクスポートしました。
正直、とほほですね。
毎回はこんなこと続けられない・・・といった感じです。
さいごに
こうした形で手間さえかけてあげることで、大きなテーブルであっても、
結果エクスポートを行うことは可能です。
しかし、毎回このような手順を行っていたのでは、
正直どこかでバックアップされていないという事態になることは目に見えていると思います。
レンタルサーバの制約は結局、安かろう悪かろうなんだなと思うところです。
MySQLはOracle Inc.による著作物です。
MySQLはFree Software Foundation, Inc.によってGPL Licenseでライセンスされています。
phpMyAdminはphpMyAdmin devel teamによる著作物です。
phpMyAdminはGNU General Public License, version 2.によってライセンスされています。
関連記事
-
phpMyAdminを利用したMySQL同期とWM3500Rポート解放
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ローカル環境へのMySQL設置
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpMyAdminでMySQLデータをサーバー上からインポートする
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpMyAdminでMySQLデータをサーバー上にエクスポートする
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
PHP.iniに設定する設定をhttpd.confや.htaccessに対して行うメリット
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpMyAdminを利用したエクスポート・インポートで最も適した設定とは?
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ファイルアップロード上限の変更(PHP phpMyAdmin wordpress)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(テーブル単位)それでもphpMyAdminでエクスポートがサーバーエラーになってしまう場合の対処法
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpMyAdminでMySQLエクスポートが途中で切れる場合の対応策
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpmyadminダウンロードが始まらない時の対処
Google or AdMax Promotion(it) 禁断の機能がau公式 …