バックアップウィザード(for SQL Server)を使った運用について説明します。
バックアップウィザード(for SQL Server)は、以下のスクリプトを生成します。
参照
操作方法の詳細は、『ETERNUS SF Webコンソール説明書』の「ウィザードによるSQL Serverのバックアップスクリプトの生成とスクリプト実行用環境設定」を参照してください。
完全バックアップ実行スクリプト
完全バックアップ実行スクリプトの仕様を以下に示します。
スクリプトの格納先サーバ | バックアップ対象のデータベースが動作しているデータベースサーバ |
格納先ディレクトリパス名 |
|
ファイル名 | execute_backup_groupName.bat
|
実行形式 |
|
文字コード | MS932 |
終了ステータス | 0: 正常終了 |
注意
完全バックアップ実行スクリプトは、データベースがオンラインの状態で実行してください。
完全バックアップを取得した時点で、これまでのログバックアップファイルはリストアで不要となります。そのため、完全バックアップ実行スクリプトが実行されると、バックアップ対象のデータベースに対応するログバックアップ先の、下記の2つの条件を満たすログバックアップファイルがすべて削除されます。
バックアップウィザード実行時に指定したフォルダに格納されている
トランザクションログバックアップファイル名にレプリケーショングループ名が含まれる
完全バックアップ実行スクリプトの出力メッセージを以下に示します。
出力メッセージ | 説明 |
---|---|
===== Backup Start. executionCommandName ===== | スクリプト内で実行するコマンドを executionCommandName に表示します。 |
commandResult | 本スクリプト内で実行したswsrpbackup_sqlコマンドの実行結果を表示します。 |
dbName | バックアップしたデータベース名を dbName に表示します。 |
Database list file already exists. | スクリプト内で使う一時ファイルと同じ名前のファイルがすでに存在する場合に表示します。 |
execute_backup is successfully completed. | 正常終了時に表示します。 |
execute_backup failed. | 異常終了時に表示します。 |
完全バックアップ実行スクリプトの例を以下に示します。
@echo off setlocal setlocal disabledelayedexpansion set WORKSPACE_PATH=C:\Win32app\AdvancedCopyManager\var\ set GROUP_NAME=XXXXX set NOWTIME=%time: =0% set NOWTIME=%NOWTIME:~0,2%%NOWTIME:~3,2%%NOWTIME:~6,2%%NOWTIME:~9,2% set DATABASE_LIST_FILE=%WORKSPACE_PATH%%NOWTIME%_DBlist.lst set INSTANCE_NAME=instance1 set INSTANCE_OPTION=-Xinstance %INSTANCE_NAME% set SWSTGNODE= set CLUSTER_OPTION= set DATABASE_NAME_001=UserDatabase set LOGBACKUP_PATH_001=C:\LOGBACKUP set CHECK="swsrpbackup_sql completed" set CMD=C:\Win32app\AdvancedCopyManager\bin\swsrpbackup_sql %CLUSTER_OPTION% -Xgroup "%GROUP_NAME%" %INSTANCE_OPTION% -T -Xdblist "%DATABASE_LIST_FILE%" if exist "%DATABASE_LIST_FILE%" (echo Database list file already exists. & exit /b 1) echo %DATABASE_NAME_001%>>%DATABASE_LIST_FILE% echo ===== Backup Start. %CMD% ===== %CMD% if not %ERRORLEVEL% == 0 (echo execute_backup failed. & del %DATABASE_LIST_FILE% >NUL 2>&1 & exit /b 1) del "%DATABASE_LIST_FILE%" >NUL 2>&1 del "%LOGBACKUP_PATH_001%\%GROUP_NAME%*@*.bk" >NUL 2>&1 echo execute_backup is successfully completed. exit /b 0
参考
完全バックアップ実行スクリプトでは、swsrpbackup_sqlコマンドを実行します。
完全バックアップ実行スクリプトでエラーが発生した場合、swsrpbackup_sqlコマンドのエラーメッセージが出力されます。『ETERNUS SF メッセージ説明書』を参照し、対処してください。
ログバックアップ実行スクリプト
ログバックアップ実行スクリプトの仕様を以下に示します。
スクリプトの格納先サーバ | バックアップ対象のデータベースが動作しているデータベースサーバ |
格納先ディレクトリパス名 |
|
ファイル名 | execute_logbackup_groupName.bat
|
実行形式 |
|
文字コード | MS932 |
終了ステータス | 0: 正常終了 |
注意
ログバックアップ実行スクリプトは、データベースがオンラインの状態で実行してください。
復旧モデルが「単純」のデータベースに対してバックアップウィザードを実行した場合、ログバックアップスクリプトは生成されません。
ログバックアップ実行スクリプトの出力メッセージを以下に示します。
出力メッセージ | 説明 |
---|---|
===== Log Backup Start. Database:dbName ===== | ログをバックアップするデータベース名を dbName に表示します。 |
commandResult | 本スクリプト内で実行したsqlcmdコマンドの実行結果を表示します。 |
Log backup file already exists. | 出力しようとしたトランザクションログファイルと同じ名前のファイルがすでに存在する場合に表示します。 |
execute_logbackup is successfully completed. | 正常終了時に表示します。 |
execute_logbackup failed. | 異常終了時に表示します。 |
Invalid Argument. | 引数の指定方法が誤っている場合に表示します。 |
ログバックアップ実行スクリプトの例を以下に示します。
@echo off setlocal setlocal disabledelayedexpansion SET GROUP_NAME=XXXXX SET NOWDATE=%date:/=% SET NOWTIME=%time: =0% SET NOWTIME=%NOWTIME:~0,2%%NOWTIME:~3,2%%NOWTIME:~6,2%%NOWTIME:~9,2% SET DATABASE_NAME_001=UserDatabase SET DISP_DATABASE_NAME_001=UserDatabase SET BACKUP_LOG_PATH_001=C:\LOGBACKUP\%GROUP_NAME%_%DISP_DATABASE_NAME_001%@%NOWDATE%%NOWTIME%.bk SET SERVER_NAME=. SET NO_TRUNCATE= SET RETURN_CODE=0 if not "%1" == "-restoreall" if not "%1" == "" (echo Invalid Argument. 1>&2 & exit /b 3) if "%1" == "-restoreall" if not "%2" == "" (echo Invalid Argument. 1>&2 & exit /b 3) if "%1" == "" goto restoreall if "%1" == "-restoreall" (SET NO_TRUNCATE=WITH NO_TRUNCATE & goto restoreall) echo Invalid Argument. 1>&2 & exit /b 3 :restoreall SET DATABASE_NAME=%DATABASE_NAME_001% echo ===== Log Backup Start. Database:%DISP_DATABASE_NAME_001% ===== if exist "%BACKUP_LOG_PATH_001%" ( echo Log backup file already exists. SET RETURN_CODE=1 ) else ( sqlcmd -b -S %SERVER_NAME%\instance1 -Q "BACKUP LOG [%DATABASE_NAME%] TO DISK = '%BACKUP_LOG_PATH_001%' %NO_TRUNCATE%" ) if not %ERRORLEVEL% == 0 ( SET RETURN_CODE=1 ) if %RETURN_CODE% == 0 ( echo execute_log_backup is successfully completed. ) else ( echo execute_log_backup failed. ) exit /b %RETURN_CODE%
参考
ログバックアップ実行スクリプトでは、sqlcmdコマンドを実行します。
ログバックアップ実行スクリプトでエラーが発生した場合、以下に示す対処で解決できることがあります。そのため、エラー発生時は、最初に以下の対処を実施することをおすすめします。
ログバックアップ実行スクリプトを実行した直後に以下のコマンドを実行し、ログバックアップ実行スクリプト実行時の終了ステータスを取得してください。
echo %ERRORLEVEL%
取得した終了ステータスに応じて、以下の対処を実施してください。
ログバックアップ実行スクリプトの終了ステータスが1でエラーとなった場合:
SQL Serverのエラーメッセージが出力されるため、SQL Serverのマニュアルを参照し、対処を行ってください。
ログバックアップ実行スクリプトの終了ステータスが3でエラーとなった場合:
スクリプトの引数に誤りがないか確認してください。
バックアップ解除スクリプト
バックアップ解除スクリプトの仕様を以下に示します。
スクリプトの格納先サーバ | バックアップ対象のデータベースが動作しているデータベースサーバ |
格納先ディレクトリパス名 |
|
ファイル名 | delete_backup_groupName.bat
|
実行形式 |
|
文字コード | MS932 |
終了ステータス | 0: 正常終了 |
バックアップ解除スクリプトの出力メッセージを以下に示します。
出力メッセージ | 説明 |
---|---|
===== Cancel Backup Start : executionCommandName ===== | スクリプト内でバックアップ設定のキャンセルを実行するコマンドをexecutionCommandName に表示します。 |
===== Delete Backup Start : executionCommandName ===== | スクリプト内でバックアップ設定の削除を実行するコマンドをexecutionCommandName に表示します。 |
delete_backup is successfully completed. | 正常終了時に表示します。 |
delete_backup failed. | 異常終了時に表示します。 |
バックアップ解除スクリプトの例を以下に示します。
@echo off setlocal setlocal enabledelayedexpansion set CMDPATH=C:\Win32app\AdvancedCopyManager\bin\ set GROUP_NAME=XXXXX set SWSTGNODE= set ORGVOL_001=g1d321p1@E01DBS01WR2DE64 set DSTVOL_001=g1d324p1@E01BKS01WR2DE64 set ORGVOL_002=g1d322p1@E01DBS01WR2DE64 set DSTVOL_002=g1d434p1@E01BKS01WR2DE64 set CHECK_CANCEL="GROUP=%GROUP_NAME% swsrpcancel completed" set CHECK_DELVOL="swsrpdelvol completed" set ERRORMSG2605=swsrp2605 set ERRORMSG2637=swsrp2637 set CMD_CANCEL="%CMDPATH%swsrpcancel -Xgroup %GROUP_NAME% 2>&1" set CMD_DELVOL_001="%CMDPATH%swsrpdelvol %ORGVOL_001% %DSTVOL_001% 2>&1" set CMD_DELVOL_002="%CMDPATH%swsrpdelvol %ORGVOL_002% %DSTVOL_002% 2>&1" echo ===== Cancel Backup Start. %CMD_CANCEL% ===== set RET= for /f "usebackq tokens=*" %%i in (`%CMD_CANCEL%`) do (if "%%i"==%CHECK_CANCEL% (set RET=OK) else (call :CHECK %ERRORMSG2605% "%%i")) if not "%RET%"=="OK" echo delete_backup failed. & exit /b 1 echo ===== Delete Backup Start. %CMD_DELVOL_001% ===== set RET= for /f "usebackq tokens=*" %%i in (`%CMD_DELVOL_001%`) do (if "%%i"==%CHECK_DELVOL% (set RET=OK) else (call :CHECK %ERRORMSG2637% "%%i")) if not "%RET%"=="OK" echo delete_backup failed. & exit /b 2 echo ===== Delete Backup Start. %CMD_DELVOL_002% ===== set RET= for /f "usebackq tokens=*" %%i in (`%CMD_DELVOL_002%`) do (if "%%i"==%CHECK_DELVOL% (set RET=OK) else (call :CHECK %ERRORMSG2637% "%%i")) if not "%RET%"=="OK" echo delete_backup failed. & exit /b 2 echo delete_backup is successfully completed. exit /b 0 :CHECK set CHECK_STR=%2 for /f "tokens=1" %%i in (%CHECK_STR%) do (if %%i==%1 (set RET=OK) else (echo %CHECK_STR:"=%)) exit /b
参考
バックアップ解除スクリプトでは、以下のコマンドを実行します。
バックアップ解除スクリプトでエラーが発生した場合、以下に示す対処で解決できることがあります。そのため、エラー発生時は、最初に以下の対処を実施することをおすすめします。
バックアップ解除スクリプトを実行した直後に以下のコマンドを実行し、バックアップ解除スクリプト実行時の終了ステータスを取得してください。
echo %ERRORLEVEL%
取得した終了ステータスに応じて、以下の対処を実施してください。
バックアップ解除スクリプトの終了ステータスが1でエラーとなった場合
swsrpcancelコマンドのエラーメッセージが出力されるため、画面に出力される実行コマンドラインおよび『ETERNUS SF メッセージ説明書』を参照し、対処を行ってください。
バックアップ解除スクリプトの終了ステータスが2でエラーとなった場合
swsrpdelvolコマンドのエラーメッセージが出力されるため、画面に出力される実行コマンドラインおよび『ETERNUS SF メッセージ説明書』を参照し、対処を行ってください。
「10.5.4.1 バックアップスクリプトの作成」で生成されたスクリプトを使用して、SQL Serverデータベースをバックアップできます。
完全バックアップ実行スクリプト
SQL Serverのデータベースの完全バックアップを実行するスクリプトです。
ログバックアップスクリプト
トランザクションログのバックアップを実行するスクリプトです。
注意
復旧モデルが「完全」または「一括ログ」の場合は、定期的にログバックアップを行ってください。ログバックアップを行うことでSQL Serverデータベースのトランザクションログの切捨てが行われます。トランザクションログの切捨てにより、ログファイルの領域不足を防止できます(トランザクションログの切捨てについては、SQL Serverのドキュメントを参照してください)。
スクリプトを本製品のスケジューラーに登録することで、SQL Serverデータベースを簡単にバックアップできます。
スケジューラーに登録する方法は、「第11章 スケジューラー」を参照してください。
本製品のスケジューラーに登録する以外にも、OSのタスクスケジューラへの登録や手動実行でSQL Serverデータベースをバックアップできます。
OSのタスクスケジューラに登録してバックアップを自動/手動で実行する手順を以下に示します。
タスクスケジューラによるバックアップ自動実行
「10.5.4.1 バックアップスクリプトの作成」で生成されたスクリプトファイルを、任意の場所にコピーします。
バックアップ元のデータベースサーバに、AdvancedCopy Managerコマンド実行ユーザーでログインします。
参照
コマンド実行ユーザーは、『ETERNUS SF 導入ガイド』の「コマンド実行ユーザーの作成」を参照してください。
タスクスケジューラを起動します。
起動方法を以下に示します。
Windows Server 2008の場合
[システムとメンテナンス]-[管理ツール]-[タスク スケジューラ]
Windows Server 2008 R2の場合
[システムとセキュリティ]-[管理ツール]-[タスク スケジューラ]
Windows Server 2012の場合
[スタート]-[管理ツール]-[タスク スケジューラ]
タスクスケジューラに以下を設定します。
タスク名
タスクの開始日時
手順1でコピーしたスクリプトファイルを、実行するプログラムに設定
手動によるバックアップ実行
「10.5.4.1 バックアップスクリプトの作成」で生成されたスクリプトファイルを、任意の場所にコピーします。
バックアップ元のデータベースサーバに、AdvancedCopy Managerコマンド実行ユーザーでログインします。
参照
コマンド実行ユーザーは、『ETERNUS SF 導入ガイド』の「コマンド実行ユーザーの作成」を参照してください。
コマンドプロンプトを起動し、手順1でコピーしたスクリプトファイルを実行します。詳細は「10.5.4.1 バックアップスクリプトの作成」を参照してください。
バックアップ先ボリュームをテープ媒体へバックアップする際は、データファイル領域とトランザクションログ領域内のすべてのファイルをバックアップしてください。
バックアップ方法は、ファイル単位でのバックアップ、RAWバックアップのどちらでも可能です。
システムデータベースに変更を及ぼす以下のような設定を行った場合は、システムデータベースをバックアップしてください。
サービスパック、修正モジュールの適用時
インスタンス作成直後
サーバ構成の設定変更
サーバレベルのオブジェクトの作成/変更/削除
データベースの作成/変更/削除
ファイルグループ、データファイルの追加/削除
バックアップデバイスの作成/削除
ログインの追加/変更/削除
リンクサーバやリモートログインなどの分散クエリおよびリモートプロシージャコール用の設定
ジョブの追加/変更/削除
警告の追加/変更/削除
オペレータの追加/変更/削除
DB インポート/エクスポート ウィザードによって作成されたSQL Server Integration ServicesパッケージをSQL Server に保存する操作
レプリケーション設定の追加/変更/削除
ユーザーテンプレートの作成または削除
バックアップ方法は、SQL Serverのドキュメントを参照してください。