XAMPPのMySQLでデータベースをリストアする方法
XAMPPのMySQLの使い方をメモ。
Webサーバー(Linux)のMySQLでデータベースをバックアップして、ローカルのWindowsパソコンに入れたXAMPPのMySQLで復元したい場合の手順です。
データベースのバックアップ
(2) mysqldumpでデータベースをバックアップする。
(ここでは「test」というデータベースをバックアップしたことにして話を進めます)
(3) バックアップファイルの名前は、データベースに合わせて「test.dump」とか「test.sql」にしておく。
(実質的に、中身はSQL文の塊になっているただのテキストファイル)
(4) test.dumpをローカルパソコンにダウンロードする。
(必要に応じてファイルを圧縮/解凍しておく。)
データベースのリストア
ダウンロードしたtest.dumpを使って、Windowsパソコン上でデータベースを復元する。
(5) XAMPPを起動して、MySQLを起動させておく。
(以下の説明で、パスは適宜自分の環境に合わせて読み替えてください)
・XAMPPは、Cドライブの直下にインストールしたものとする。
・「mysql.exe」や「mysqldump.exe」は、「C:\xampp\mysql\bin」の中にあるものとする。
・「test.dump」は「C:\backup」の中にコピーしたとする。
(6) XAMPPのphpMyAdminで「test」という空のデータベースを作成しておく。
(7) バッチファイルを作る。
操作を間違えるといけないので、あらかじめコマンドをバッチファイルに書いておく。
・Cドライブの「backup」フォルダの中に「test.bat」というファイルを作成する。
・test.batをテキストエディタで開いて、以下の内容をコピペする。
(説明)
・MySQLのユーザーは「root」を使用している。→別のユーザー名でもOK
・「root」のパスワードが「1234」だった場合、-pの後に続けて書く。
「-p1234」みたいに「mysql -u root -p1234 -D test < c:\backup\test.dump」と書く。
(8) バッチファイルを実行する。
・test.batをダブルクリックする。
・以下のような画面が出たら、エンターキーを押す。
・実行が終わると「続行するには何かキーを押してください」というメッセージが表示されるので、エンターキーなどを適当に押しておけばOK。
phpMyAdminでデータベースの中身を見て、復元されていることを確認しておきます。
これでリストア(復元)ができました。
注意点
- 他のデータベースのテーブルを参照しているビューテーブルを含んでいる場合、先に他のデータベース(参照元)を復元しておきます。
- 参照先のデータベースがない場合は、リストアの途中でエラーになります。
- データが大き過ぎて復元できなかった場合、データベース丸ごとではなく、テーブルを個別にリストアすればOK?
(1つのテーブルのデータ量が大きい場合は、さらに行を分けてダンプすればいいかも?)
参考
以下のページを参考にしました。
XAMPPのMySQLの使い方
MySQLのバックアップをバッチで取得する方法について (ページ 1) / 質問コーナー / Nucleus(JP)フォーラム
当方ではバッチファイルにmysqldump.exeがあるディレクトリをCDコマンドで記述してあるのですが、この行を取り払うと、0バイトのファイルができることを確認しました。
当方の環境はWindows 8.1で、xamppをCドライブにインストールしていますので、
以下のようなコードにすればうまくいくと思います。
c:
cd c:\xampp\mysql\bin
mysqldump -u root -p***** aaa_db > d:\backup_db\aaa_db
MySQLをWindowsにインストール + mysqldumpでバックアップ + Xampp設定 | テックメモ
基本的なバックアップ方法(mysqldump)
Winでバッチファイルをタスクリストで処理する場合。
cd C:\Users\Administrator\Desktop\xampp\mysql\bin
mysqldump -u root -p1234 db > C:\Users\Administrator\Desktop\backup.sql
pause
MySQLのリストア操作
リストア
↑今回は、この書式を採用しました。
バッチファイルの書き方
その他、XAMPPとは?
XAMPP(ザンプ)とは、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージとしてまとめたもので、apachefriends.orgから提供されている。主として開発用あるいは学習用ではあるが、イントラネットなどにおいて実運用環境として使われることもある。