ページの先頭行へ戻る
ETERNUS SF AdvancedCopy Manager 16.5 運用ガイド
FUJITSU Storage

10.5.4 バックアップウィザード(for SQL Server)によるバックアップ

バックアップウィザード(for SQL Server)を使った運用について説明します。

10.5.4.1 バックアップスクリプトの作成

バックアップウィザード(for SQL Server)は、以下のスクリプトを生成します。

参照

操作方法の詳細は、『ETERNUS SF Webコンソール説明書』の「ウィザードによるSQL Serverのバックアップスクリプトの生成とスクリプト実行用環境設定」を参照してください。

完全バックアップ実行スクリプト

完全バックアップ実行スクリプトの仕様を以下に示します。

表10.17 完全バックアップ実行スクリプトの仕様

スクリプトの格納先サーバ

バックアップ対象のデータベースが動作しているデータベースサーバ

格納先ディレクトリパス名

非クラスタ運用の場合:

<AdvancedCopy Managerエージェントインストール時のプログラムディレクトリ>\Wizard\bat

クラスタ運用の場合:

<AdvancedCopy Manager共有データ用共有ディスク>:\var\opt\swstorage\Wizard\bat

ファイル名

execute_backup_groupName.bat

groupName:

バックアップウィザードで設定したレプリケーショングループ名

デフォルト:

ApplinkForSQLGroup_yyyymmddhhmmss

yyyymmddhhmmssは、ウィザードでスクリプトが作成された日時。

実行形式

非クラスタ運用の場合:

<AdvancedCopy Managerエージェントインストール時のプログラムディレクトリ>\Wizard\bat\execute_backup_groupName.bat

クラスタ運用の場合:

<AdvancedCopy Manager共有データ用共有ディスク>:\var\opt\swstorage\Wizard\bat\execute_backup_groupName.bat

文字コード

MS932

終了ステータス

0: 正常終了
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 メッセージ説明書』を参照し、対処してください。

ログバックアップ実行スクリプト

ログバックアップ実行スクリプトの仕様を以下に示します。

表10.18 ログバックアップ実行スクリプトの仕様

スクリプトの格納先サーバ

バックアップ対象のデータベースが動作しているデータベースサーバ

格納先ディレクトリパス名

非クラスタ運用の場合:

<AdvancedCopy Managerエージェントインストール時のプログラムディレクトリ>\Wizard\bat

クラスタ運用の場合:

<AdvancedCopy Manager共有データ用共有ディスク>:\var\opt\swstorage\Wizard\bat

ファイル名

execute_logbackup_groupName.bat

groupName:

バックアップウィザードで設定したレプリケーショングループ名

デフォルト:

ApplinkForSQLGroup_yyyymmddhhmmss

yyyymmddhhmmssは、ウィザードでスクリプトが作成された日時。

実行形式

非クラスタ運用の場合:

<AdvancedCopy Managerエージェントインストール時のプログラムディレクトリ>\Wizard\bat\execute_logbackup_groupName.bat [-restoreall]

クラスタ運用の場合:

<AdvancedCopy Manager共有データ用共有ディスク>:\var\opt\swstorage\Wizard\bat\execute_logbackup_groupName.bat [-restoreall]

パラメーター
省略 :

通常運用時のトランザクションログのバックアップを実行します(トランザクションログの切捨てが行われます)。スクリプト内のすべてのデータベースのログバックアップを実行します。

-restoreall :

「最新時点へのリストア」実行前の最新トランザクションログのバックアップを実行します(トランザクションログの切捨ては行われません)。スクリプト内のすべてのデータベースのログバックアップを実行します。

文字コード

MS932

終了ステータス

0: 正常終了
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でエラーとなった場合:
    スクリプトの引数に誤りがないか確認してください。

バックアップ解除スクリプト

バックアップ解除スクリプトの仕様を以下に示します。

表10.19 バックアップ解除スクリプトの仕様

スクリプトの格納先サーバ

バックアップ対象のデータベースが動作しているデータベースサーバ

格納先ディレクトリパス名

非クラスタ運用の場合:

<AdvancedCopy Managerエージェントインストール時のプログラムディレクトリ>\Wizard\bat

クラスタ運用の場合:

<AdvancedCopy Manager共有データ用共有ディスク>:\var\opt\swstorage\Wizard\bat

ファイル名

delete_backup_groupName.bat

groupName:

バックアップウィザードで設定したレプリケーショングループ名

デフォルト:

ApplinkForSQLGroup_yyyymmddhhmmss

yyyymmddhhmmssは、ウィザードでスクリプトが作成された日時。

実行形式

非クラスタ運用の場合:

<AdvancedCopy Managerエージェントインストール時のプログラムディレクトリ>\Wizard\bat\delete_backup_groupName.bat

クラスタ運用の場合:

<AdvancedCopy Manager共有データ用共有ディスク>:\var\opt\swstorage\Wizard\bat\delete_backup_groupName.bat

文字コード

MS932

終了ステータス

0: 正常終了
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.2 バックアップ実行

10.5.4.1 バックアップスクリプトの作成」で生成されたスクリプトを使用して、SQL Serverデータベースをバックアップできます。

注意

復旧モデルが「完全」または「一括ログ」の場合は、定期的にログバックアップを行ってください。ログバックアップを行うことでSQL Serverデータベースのトランザクションログの切捨てが行われます。トランザクションログの切捨てにより、ログファイルの領域不足を防止できます(トランザクションログの切捨てについては、SQL Serverのドキュメントを参照してください)。

スクリプトを本製品のスケジューラーに登録することで、SQL Serverデータベースを簡単にバックアップできます。
スケジューラーに登録する方法は、「第11章 スケジューラー」を参照してください。

本製品のスケジューラーに登録する以外にも、OSのタスクスケジューラへの登録や手動実行でSQL Serverデータベースをバックアップできます。

OSのタスクスケジューラに登録してバックアップを自動/手動で実行する手順を以下に示します。

タスクスケジューラによるバックアップ自動実行

  1. 10.5.4.1 バックアップスクリプトの作成」で生成されたスクリプトファイルを、任意の場所にコピーします。

  2. バックアップ元のデータベースサーバに、AdvancedCopy Managerコマンド実行ユーザーでログインします。

    参照

    コマンド実行ユーザーは、『ETERNUS SF 導入ガイド』の「Windowsのユーザーアカウント」を参照してください。

  3. タスクスケジューラを起動します。
    起動方法を以下に示します。

    • Windows Server 2008の場合

      [システムとメンテナンス]-[管理ツール]-[タスク スケジューラ]

    • Windows Server 2008 R2の場合

      [システムとセキュリティ]-[管理ツール]-[タスク スケジューラ]

    • Windows Server 2012以降の場合

      [スタート]-[管理ツール]-[タスク スケジューラ]

  4. タスクスケジューラに以下を設定します。

    • タスク名

    • タスクの開始日時

    • 手順1でコピーしたスクリプトファイルを、実行するプログラムに設定

手動によるバックアップ実行

  1. 10.5.4.1 バックアップスクリプトの作成」で生成されたスクリプトファイルを、任意の場所にコピーします。

  2. バックアップ元のデータベースサーバに、AdvancedCopy Managerコマンド実行ユーザーでログインします。

    参照

    コマンド実行ユーザーは、『ETERNUS SF 導入ガイド』の「Windowsのユーザーアカウント」を参照してください。

  3. コマンドプロンプトを起動し、手順1でコピーしたスクリプトファイルを実行します。詳細は「10.5.4.1 バックアップスクリプトの作成」を参照してください。

10.5.4.3 テープへのバックアップ(テープにバックアップする場合)

バックアップ先ボリュームをテープ媒体へバックアップする際は、データファイル領域とトランザクションログ領域内のすべてのファイルをバックアップしてください。

バックアップ方法は、ファイル単位でのバックアップ、RAWバックアップのどちらでも可能です。

10.5.4.4 システムデータベースのバックアップ

システムデータベースに変更を及ぼす以下のような設定を行った場合は、システムデータベースをバックアップしてください。

バックアップ方法は、SQL Serverのドキュメントを参照してください。