MySQLのデータベースをバックアップする実行ファイル

フロッピーディスク、すっかり見かけなくなりましたね。これは3.5インチですが、わたしが就職したころには、5インチや8インチなんてサイズもありました。

今回はバックアップのお話です。先日、PCのRedmineに公式サイトの全チケットを手作業でETL(Extract/Transform/Load)しましたが、この直後のデータベース(MySQL)をバックアップしておくため、Windows用の実行ファイルを作成しました。サンプルとして紹介します。

この記事の情報を利用される場合は自己責任でお願いします。
動作環境が違いますので、利用する際は、設定を見直してください。

 

スポンサーリンク

ちょっとだけ解説

同じ名前のダンプファイルがあれば上書きします。以前のファイルを残しておきたい場合は、実行前にファイル名を変更して退避しておく必要があります。

高度なオンライン用(稼動させながら)のバックアップではないので、RedmineとApacheのサービスを停止した状態で使用するのが前提です。

MySQLのダンプ機能でバックアップしています。実行するとパスワードを求められます。

正しいパスワードを入力すると、指定したフォルダ(サンプルではCドライブ直下)に「dump-binary.sql」というダンプファイルが作成されます。間違えるとエラーになり、空ファイル(0バイト)が作成されます。

HDDのクラッシュなどH/WトラブルにはRAIDでも対応できますが、誤ったRESTでチケットの内容を大量に書き換えてしまった場合など、やはり定期的なバックアップは必要ですね。

@echo off
setlocal

rem ****** 設定開始 ******
rem <注意>
rem 「=」の前後にスペースを入れないようにしてください。

rem mysqldump.exeのディレクトリ
set MYSQLBIN=c:\bitnami\redmine\mysql\bin

rem 管理者のユーザーID
set USER=root

rem バックアップするデータベース
set DATABASE=bitnami_redmine

rem ダンプファイルのディレクトリ
set DUMPDIR=c:\dumpfile

rem ****** 設定終了 ******

:LOOP
cls
echo ------------------------------------------------
echo Backup MySQL Database
echo ------------------------------------------------
echo.
set /p answer="%DATABASE%をバックアップしますか(y/n)? : "
if "%answer%"=="y" (
"%MYSQLBIN%\mysqldump.exe" --default-character-set=binary -u %USER% -p --databases %DATABASE% > "%DUMPDIR%\dump-binary.sql"
)else if "%answer%"=="n" (
echo.
echo 処理をキャンセルしました。
)else (
echo.
echo 入力された文字が違います。
echo.
echo 何かキーを押すと戻ります。
echo.
pause > nul
goto LOOP
)
echo.
echo 何かキーを押すと終了します。
echo.
pause > nul
echo.
endlocal
exit /B

 

タイトルとURLをコピーしました