XAMPPでphpMyAdminを使って大容量データのインポートやエクスポートが失敗する時にはこのやり方

XAMPPでphpMyAdminを使って大容量データのインポートやエクスポートが失敗する時にはこのやり方の画像

普通のサイト運営していたら、データベース容量が100MBを超えてくるなんてことはあまりないと思いますが、大規模サイトだとDBがとんでもなく大容量になっているのです。
その大容量DBをエクスポートしたりインポートしたりすると、途中でデータが切れる、エラーしてデータが欠けるなどのことが起きる場合があります。今回はローカル環境を構築するという前提でXAMPPに大容量DBをインポート・エクスポートする方法を説明します。

■ XAMPPに大容量DBをインポートする

phpの扱えるメモリサイズの上限を上げる

phpMyAdminで DB をインポートできるファイルの容量はデフォルトで2Mに設定されているので、xampp/php/php.iniをテキストエディタで開き、以下の部分の記述を修正する。
容量はDBサイズより大きい値に設定する。

memory_limit = 128M
post_max_size = 128M
upload_max_filesize = 128M

ウェブサーバー上でアップロードする

  1. C:\xampp\phpMyAdmin\config.inc.phpに以下を追記する
    $cfg['UploadDir']='./upload';
  2. C:\xampp\phpMyAdmin\に「upload」という名前のフォルダを新規に追加して、その中に大容量のインポートファイルを置く。
  3. すると phpMyAdmin の画面のインポートの中に「ウェブサーバー上でアップロードする : 」という項目でが新たに追加される。

■ XAMPPから大容量DBをエクスポートする

XAMPP上ではphpMyAdminをつかうと、容量が大きくなるほどエラーデータになる確率が上がってしまうようだ。
なので、極力 mysqldump でDBのインポート、エクスポートしたほうがよい。
以下がその手順。

  1. コマンドプロンプトを起動する
  2. mysqlコマンドが有効な階層に移動する
    cd c:\xampp\mysql\bin
  3. コピー元データベースをバックアップに保存する
    (例 mysqldump -u root -p -r backup.sql -l mt_db)
    mysqldump -u <ユーザ名> -p -r <保存データ名> -l <コピー元データベース名>
  4. パスワードを聞かれるので、C:\xampp\phpMyAdmin\config.inc.php内の
    $cfg['Servers'][$i]['password']の値を入力する。
    (※パスワードの値が空の場合は何も入力せずEnterキー)

※特定のテーブルだけエクスポートしたいとき。(デーブルは1つでも複数でも指定可能。)

mysqldump -u ユーザー名 -p -t データベース名 テーブル1 テーブル2 ... > ダンプファイル名

(例 mysqldump -u root -p -t mt_db mt_session > backup_session.sql)