Categories: MySQL

Windows環境でMySQLのデータをバックアップする

開発中など、ローカルで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ファイルにドラッグドロップするだけ。

簡単です。

nakaike

Share
Published by
nakaike
Tags: 7zamysqldump