MySQLのデータベースにダンプファイルをリストアする実行ファイル

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

 

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