開発中など、ローカルでMySQLを利用していると、MySQLのデータをバックアップしたり、別のMySQLにデータをコピーや引っ越ししたりすることがあります。 そんなときに、手軽にバックアップ環境の作り方。
まず、バックアップを作成するためのバッチファイルをつくります。
以下の内容をテキストファイルで作成して、backup.batというファイル名で保存します。
mysqldump -A -u root -ppassword > backup_%date:~-10,4%_%date:~-5,2%_%date:~-2,2%.sql
上の例では、 -A は全てのデータベースをダンプすることを意味します。
-u のあとにログインユーザー名を、-pのあとにパスワードを入れますが、-pとパスワードの間に空白はいれません。
上の例ではpasswordというパスワードになっています。
> のあとに、保存先を指定します。
上のようにすると、 backup_2015_10_5.sql のように日付が入ったファイル名で保存できます。
もし、データベースごとにバックアップを撮りたいのであれば、-Aオプションは外してデータベース名を指定します。
mysqldump -u root -ppassword mydatabase > backup_%date:~-10,4%_%date:~-5,2%_%date:~-2,2%.sql
これで、mydatabase というデータベースだけがバックアップされます。
作成したバッチファイルをクリックすれば、バックアップファイルをその日の日付で保存できます。
社内環境などでデータサーバーを設置しているのなら、そのサーバーのタイムスケジュールでバッチファイルを深夜にでも稼働させるようにしておけば、毎日のデータを保存することが出来ますね。
ただ、容量が大きくなるとかさばるので、そんなときは、 backup_%date:~-10,4%_%date:~-5,2%_%date:~-2,2%.sql を backup_%date:~-2,2%.sql としてやれば、毎月のバックアップが上書きされるので、31個以上のファイルが作成されることはありません。
あるいは、圧縮するコマンドをバッチファイルに含めてもいいですね。
7zipさんを利用させてもらえば簡単です。7za.exeファイルを以下の内容のバッチファイルと同じフォルダに置いておくだけです。
SET fname=backup_%date:~-10,4%_%date:~-5,2%_%date:~-2,2% mysqldump -A -u root -ppassword > %fname%.sql c:tools7za.exe a -tzip %fname%.zip %fname%.sql del %fname%.sql
つぎに、レストア用のバッチファイルです。
@echo off cd C:DatabaseBackup if %1 == goto end set /p INP="バックアップファイルを復元しますか? (Yはい)" if "%INP%" == "Y" (goto restor) if "%INP%" == "y" (goto restor) echo %INP% pause :end exit :restor echo on mysql -u root -ppaswordこれをテキストファイルで作成して、restore.batというファイル名で作成します。
使い方は、バックアップでできたsqlファイルをrestore.batファイルにドラッグドロップするだけ。簡単です。