phpMyAdminでデータベースのエクスポートが出来ない場合の対処法
phpMyAdminを使ってデータベースのバックアップをする時に、データが重くてベースがエクスポートできないことがあります。エラーが表示されることもありますが、途中で止まりエラー表示のないままダウンロードが出来ることもあります。このようにphpMyAdminでデータベースのエクスポートが上手くいかない場合の対処法について解説していきます。
目次
1. 不要なデータを消去する
まず最初に行うことは、データベースの容量を減らすことです。下記の方法で不要なデータを減らしましょう。
(1)不要なプラグインの削除
利用していないプラグインや特に容量の多いプラグインに関しての削除を検討してください。
(2)リビジョンデータの削除(WordPressをご利用の場合)
WordPressのデータベース容量を増やしてしまう原因の1つに、WordPressのリビジョン機能があります。書いている記事を自動保存してくれる便利な機能ですが、データベースが肥大化してしまうという弊害があるので、定期的に削除した方がいいでしょう。プラグインのWP-Optimizeを使うとリビジョンデータが簡単に削除できます。
2. PHPの設定を変更する
データベースのエクスポートが出来ないのは、レンタルサーバーのPHPのメモリが足りてないのが主な原因です。サーバーのphp設定の変更を行うには、phpの設定のphp.iniファイルを使います。通常レンタルサーバーのコントロールパネルにてphp.iniの設定が変更できます。 中には、php.iniファイルが触れないサーバーもあるので、その場合は.htaccessを使って設定が可能です。
(1)データが大きすぎてアップロード上限にひっかかる場合
下記の3つの箇所を変更してください。
- memory_limit PHPが使用するメモリーの最大値
- post_max_size POSTされるリクエストの最大値
- upload_max_filesize アップロードするファイルの最大値
ただし、気を付ける点として memory_limit > post_max_size > upload_max_filesize で設定してください。
php.iniの設定
php.iniのファイルを開き、下記の数値を変更してください。
memory_limit = 128M
post_max_size = 128M
upload_max_filesize = 128M
php.iniは設定ファイルの数値の設定を変更することで、すべての処理に影響が出てきます。 この作業を行う時だけ上げて、後は設定を元に戻しましょう。
.htaccessの設定
php_value memory_limit 128M
php_value post_max_size 128M
php_value upload_max_filesize 128M
(2)データが大きすぎてタイムアウトを起こす場合
データが大きすぎるとリクエスト時間が長くなるため、PHPの実行時間も長くしておく場合があります。
php.iniの設定
max_execution_time = 60
.htaccessの設定
max_execution_time = 60
先日ヘテムルでDBのエクスポートを行いましたが、memory_limit = 128M
に固定されていて、DBのエクスポートが途中で止まっていました。
このように一部の設定が変更できないものもあります。
3. テーブルごとにエクスポート
データベース全体を一度にダウンロードすると重たいので処理に時間がかかりますが、テーブル毎にエクスポートすれば、1つの容量が少なくて済みます。
- phpMyAdminで該当のデータベースを開き、テーブルを選択してエクスポートします。
- テーブルの数だけこの作業を繰り返します。
4. Adminerを使う
Adminerはたった1つのphpファイルで出来ていて、phpMyAdminに比べて動作が軽快。phpMyAdminで上手くいかない場合の代替え手段としておすすめです。
Adminerの使い方
(1) Adminerの公式サイトから、ファイルをダウンロードします。
(2) ダウンロードしたphpファイルを、サーバーにアップロード
(3) ブラウザからファイルにアクセスし、DB接続情報を入力してログイン
(4) サイドメニューの「エクスポート」を選択してエクスポート
5. SSHを使ってダウンロードする
SSHが使えるサーバーであれば、SSHに接続した状態で下記のコマンドを入力することで、簡単にデータベースに接続し、データベースのダウンロードが行えます。
mysqldump --single-transaction -u {mysqlのアカウント名} -p{mysqlのパスワード} -h {mysqlサーバー名} 対象DB名 > 出力先.sql
6. 最後に
データベースのエクスポートはサーバの環境やデータベースのサイズによって対応が異なります。まずは今日ご紹介した方法を順に試してみてください。