Bigdump を使った mysql.dump の読み込み
大きな mysql データベースの dump ファイルの読み込みに問題がある場合、例えばタイムアウトなどが起こって読み込めないなど、
その問題に対処したスクリプトとして、BugDump というものを Alexey Ozerov さんが開発・公開されています。ドイツの方かな、感謝。
今回、開発中の Laravel を使ったプロジェクトのローカルな開発環境(MAMP+マルチドメイン環境)で bigdump にお世話になったのでその使い方のメモを書いておきます。
想定している開発環境
- XAMPP または MAMP を利用し、かつマルチドメインで複数のサーバの開発を行っている。
- Laravel フレームワークを利用した Web サーバー開発を行っている。
環境設定
BigDump の説明を読むと、サーバー上で動作する php のスクリプトとして開発されているので、マルチドメインの一つとして BigDump のスクリプトを動くように設定します。
BigDump 用のドメインを準備
フォルダの準備
まずマルチドメインで動作する環境を作るため
htdocs の下に、bigdump というフォルダを作成し、簡単な index.html を準備します。
作成するフォルダ: htdocs/bigdump
作成する index.html
サンプル index.html
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Bigdump index</title>
</head>
<body>
<h1>Bigdump index</h1>
<p>
<a href="./bigdump.php">bigdump.php</a>
</p>
</body>
</html>
httpd-vhost.conf の編集
マルチドメインの設定はできているという前提で、XAMPP(MAMP) の httpd-vhost.conf ファイルの編集を行います。
もちろんポート番号や ServerName は環境に合わせてください。
# bigdump
<VirtualHost *:8888>
DocumentRoot "/Applications/MAMP/htdocs/bigdump"
ServerName "local.bigdump"
</VirtualHost>
hosts ファイルの編集
Linux 系だと /etc/hosts
ファイルの編集。
127.0.0.1 local.bigdump
を追加
マルチドメインでのページアクセスをテスト
http://local.bigdump:8888
にアクセス。
下記のページが出ればoK.
bigdump.php のダウンロード
bigdump.php
をダウンロードします。
ダウンロードした bigdump.php
は htdocs/bigdump
フォルダの下にコピーします。
bigdump.php ファイルの編集
サーバーの設定部分 (この書面作成時では 38行目以降)
// Database configuration
$db_server = 'localhost'; //<= MAMP環境では localhost のままでOK
$db_name = 'xxxxxxxxx'; //<= Laravel で開発中の .env を参照すると良いと思います。
$db_username = 'yyyyyyyyy'; //<= Laravel で開発中の .env を参照すると良いと思います。
$db_password = 'zzzzzzzzz'; //<= Laravel で開発中の .env を参照すると良いと思います。
// Connection charset should be the same as the dump file charset (utf8, latin1, cp1251, koi8r etc.)
// See http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html for the full list
// Change this if you have problems with non-latin letters
$db_connection_charset = 'utf8mb4'; //<= 日本語を使っているので utf8からマルチバイトの utf8mb4 に変更
もう1箇所、読み込ませる元のデータベースに外部キーがある場合は、以下の設定を有効にしないとエラーが出ます。
(この書面作成時では 78行目)
// $pre_query[]='SET foreign_key_checks = 0';
の //
コメントを外して、有効にする。
$pre_query[]='SET foreign_key_checks = 0';
動作確認
まず、phpMyAdmin などを利用し、対象のデータベース内の全てのテーブルを削除(drop) しておきます。
ブラウザを利用し、作成した URL にアクセス
bigdump.php
の部分をクリック
インポートしたい dump ファイルを読み込ませて、[upload] すると、下記のような画面になります。
この画面で 赤線で示した Start Import
を実行するとインポートが始まります。
下記のような画面が出たらインポートは終了です。
アップロードした dump ファイルは /htdocs/bigdump フォルダの下に置かれています。画面から Delete File で消すことも可能でした。
以上、MAMP+マルチドメインで bigdump を利用したメモでした。