MySQLのデータベースにダンプファイルをリストアする実行ファイルを作成しました。
Bitnami Redmine Stackでインストールされたデータベースを例に紹介します。
この記事の情報を利用される場合は自己責任でお願いします。
動作環境が違いますので、利用する際は、設定を見直してください。
ちょっとだけ解説
MySQLのダンプ機能で作成したダンプファイルをリストアします。ファイル(サンプルでは「dump-binary.sql」)は、実行ファイルと同じフォルダに前もって格納しておきます。
実行前に、Redmineにアクセスしているユーザーがいない状態にします。RedmineやApacheなどMySQL以外のサービスは停止しておきます。
なお不測の事態に備え、リストア前に、現在のデータベースをバックアップしておきます。

MySQLのデータベースをバックアップする実行ファイル
今回はバックアップのお話です。先日、PCのRedmineに公式サイトの全チケットを手作業でETL(Extract/Transform/Load)しましたが、この直後のデータベース(MySQL)をバックアップしておくため、Windows用の実行ファイルを作成しました。サンプルとして紹介します。
実行すると、パスワードの入力を求められます。間違えるとエラーになり、リストアは実行されません。
@echo off setlocal rem ****** 設定開始 ****** rem <注意> rem 「=」の前後にスペースを入れないようにしてください。 rem mysql.exeのディレクトリ set MYSQLBIN=c:\bitnami\redmine\mysql\bin rem 管理者のユーザーID set USER=root rem リストアされるデータベース set DATABASE=bitnami_redmine rem リストアするダンプファイル set DUMPFILE=dump-binary.sql rem ****** 設定終了 ****** :LOOP cls echo ------------------------------------------------ echo Restore MySQL Database echo ------------------------------------------------ echo. if not exist %~dp0%DUMPFILE% ( echo. echo ダンプファイル「%DUMPFILE%」がありません。 echo この実行ファイルと同じフォルダに格納してください。 goto END ) echo ■■ 注 意 ! ■■ echo 実行すると現在の「%DATABASE%」のデータは消えてしまいます。 echo 消えてもよい場合のみ、処理を継続してください。 echo. set /p answer="ダンプファイル「%DUMPFILE%」をリストアしますか(y/n)? : " if "%answer%"=="y" ( "%MYSQLBIN%\mysql.exe" -u %USER% -p --database %DATABASE% < "%~dp0%DUMPFILE%" )else if "%answer%"=="n" ( echo. echo 処理をキャンセルしました。 )else ( echo. echo 入力された文字が違います。 echo. echo 何かキーを押すと戻ります。 echo. pause > nul goto LOOP ) :END echo. echo 何かキーを押すと終了します。 echo. pause > nul echo. endlocal exit /B