普通のサイト運営していたら、データベース容量が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
ウェブサーバー上でアップロードする
- C:\xampp\phpMyAdmin\config.inc.phpに以下を追記する
$cfg['UploadDir']='./upload';
- C:\xampp\phpMyAdmin\に「upload」という名前のフォルダを新規に追加して、その中に大容量のインポートファイルを置く。
- すると phpMyAdmin の画面のインポートの中に「ウェブサーバー上でアップロードする : 」という項目でが新たに追加される。
■ XAMPPから大容量DBをエクスポートする
XAMPP上ではphpMyAdminをつかうと、容量が大きくなるほどエラーデータになる確率が上がってしまうようだ。
なので、極力 mysqldump でDBのインポート、エクスポートしたほうがよい。
以下がその手順。
- コマンドプロンプトを起動する
- mysqlコマンドが有効な階層に移動する
cd c:\xampp\mysql\bin
- コピー元データベースをバックアップに保存する
(例 mysqldump -u root -p -r backup.sql -l mt_db)mysqldump -u <ユーザ名> -p -r <保存データ名> -l <コピー元データベース名>
- パスワードを聞かれるので、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)