このページでは、バックアップ テンプレートにスクリプトを追加する方法について説明します。バックアップ ジョブ中にスクリプトが実行するさまざまなフェーズについて説明します。
スクリプトを作成して実行すると、バックアップ ジョブの開始時、実行中、または完了後にアクションを実行できます。これらは、前処理スクリプトと後処理スクリプトとも呼ばれます。
スクリプトの場所
スクリプト フォルダは、保護が必要なファイル システムまたはデータベースが実行されているエージェントのインストール中に自動的に作成されます。スクリプトを実行するには、次のフォルダに配置する必要があります。
- Windows ホストの場合:
\Program Files\Google Cloud Backup and DR\scripts
- Linux ホストの場合:
/act/scripts
でスクリプトを実行可能にします(chmod 755 *.sh)。
スクリプトのフェーズ
スクリプトは次のフェーズで実行されます。スクリプトが実行されない場合は、スクリプト フォルダにあるかどうかを確認します。
- INIT: このフェーズは、バックアップ/リカバリ アプライアンスがエージェントに接続すると開始されます。このフェーズでは、ジョブが初期化され、認証情報が検証されます。
- PRE: このフェーズは、ジョブのメジャー オペレーションの直前に開始されます。スナップショットの場合、このフェーズはアプリケーションがフリーズする前に開始されます。マウント タイプのジョブの場合、これはデバイスがホストにマッピングされた後、ファイル システムの再スキャン、インポート、マウントなどのエージェント ベースのオペレーションが開始される前です。
- POST: このフェーズは、ジョブのメジャー オペレーションが完了した直後に開始されます。バックアップ タイプのジョブの場合、これはアプリケーションのフリーズ解除後です。マウントタイプのジョブの場合、このフェーズは、すべてのインポート、マウント、アプリケーションのオンライン化オペレーションが完了した後に開始されます。
- FINAL: このフェーズはジョブの終了です。スクリプトがゼロ以外のコードを返してジョブが失敗しない限り、ジョブは完了します。
- ABORT: このフェーズは、失敗したときに中断されたジョブを処理します。
例: スクリプト
次の例は、バックアップ ジョブ プロセスのさまざまなフェーズでホストサイド スクリプトを実行する方法を示しています。日時、アプリ名(ファイル システム名またはデータベース名)、ジョブタイプ、ジョブ名、ログ保持値(日数)、処理中のバックアップ ジョブのフェーズを示すテキストを出力する 5 つのスクリプトがあります。
```sh
$ cat /act/scripts/init.sh
#!/bin/sh
if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:INIT" >> /tmp/backup_status.log
else
echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:INIT" >> /tmp/backup_status.log
fi
$ cat /act/scripts/pre.sh
#!/bin/sh
if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:PRE" >> /tmp/backup_status.log
else
echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:PRE" >> /tmp/backup_status.log
fi
$ cat /act/scripts/post.sh
#!/bin/sh
if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:POST" >> /tmp/backup_status.log
else
echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:POST" >> /tmp/backup_status.log
fi
$ cat /act/scripts/fini.sh
#!/bin/sh
if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:FINAL" >> /tmp/backup_status.log
else
echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:FINAL" >> /tmp/backup_status.log
fi
$ cat /act/scripts/abort.sh
#!/bin/sh
if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:ABORT" >> /tmp/backup_status.log
else
echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:ABORT" >> /tmp/backup_status.log
fi
```
上記の例では、ACT_JOBTYPE = logbackup
は、実行中のジョブが完全なデータベース バックアップ タスクではなく、ログバックアップ タスクであることを示します。
選択したログ出力を取得するために、5 つのフェーズすべてを実行する必要がない場合があります。バックアップ プロセスの開始と終了を示すには、init フェーズと final フェーズのみを使用できます。
スクリプトをカスタマイズして、サービス停止や他のコマンドの実行などの他のタスクを実行することもできます。
バックアップ テンプレートにスクリプトを追加する
バックアップ テンプレートにスクリプトを追加する手順は次のとおりです。
- [バックアップ プラン] をクリックし、プルダウン リストから [テンプレート] を選択します。
- OnVault ポリシーを含むテンプレートを選択します。[テンプレート] ページが開き、選択したバックアップ テンプレートが表示されます。
- [テンプレート] ページの [ポリシー] 領域で、[スナップショット] の横にある [+ 追加] をクリックします。
- [Advanced Policy Settings] をクリックします。
[スクリプト名] までスクロールし、次のスクリプトをコピーして貼り付けます。
path=init.sh:phase=init;path=pre.sh:phase=pre;path=post.sh:phase=post;path=fini.sh:phase=final:timeout=300;path=abort.sh:phase=abort
[変更を保存] をクリックします。
-
2 つの異なるデータベースの出力が表示されます。1 つはログバックアップ ジョブで、もう 1 つは増分スナップショットです。
$ cat /tmp/backup_status.log Wed Nov 22 06:11:49 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:INIT Wed Nov 22 06:13:52 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:PRE Wed Nov 22 06:15:01 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:POST Wed Nov 22 06:15:01 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:FINAL Wed Nov 22 06:18:00 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:INIT Wed Nov 22 06:20:15 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:PRE Wed Nov 22 06:22:06 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:POST Wed Nov 22 06:22:06 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:FINAL
環境変数をログファイルに渡す
次のリストの ACT_
で始まる環境変数を使用して、ジョブからスクリプト環境情報をエクスポートできます。すべての環境変数がすべてのジョブタイプに適用できるわけではありません。
ACT_APPID
: アプリケーションのデータベース ID。ACT_APPNAME
: アプリケーションの名前。ACT_HOSTNAME
: このジョブのターゲットとなるホストの名前。ACT_JOBNAME
: ジョブの名前。ACT_JOBTYPE
: ジョブクラスのテキスト バージョン。ACT_LOGSMART_TYPE
: 有効な値は「db」のみです。データベース ログをキャプチャするには、このファイルが必要です。ACT_OPTIONS
: このジョブに適用されるポリシー オプションACT_PHASE
: ジョブフェーズを説明するテキスト文字列。ACT_POLICY
: このジョブに関連するポリシーの名前。ACT_POLICYOPT_logbackupretention
: ログバックアップ ジョブの保持日数。これは、データベース ログのバックアップ ジョブにのみ表示されます。ACT_PROFILE
: プロファイルの名前。ACT_SCRIPT_TMOUT
: 上付き文字のタイムアウト。タイムアウト値(デフォルトは 60 秒)以内にレスポンスが受信されなかった場合、スクリプトは失敗します。ACT_SOURCEHOST
: このアプリケーションのソースとなったホストの名前。ACT_TEMPLATE
: ジョブに関連するテンプレートの名前。ACT_TIMEOUT
: スクリプトの定義された時間(秒単位)。スクリプトがタイムアウト時間内に完了しなかった場合、ジョブは失敗します。ACT_VOLUMES
: 汎用アプリケーションの場合、バックアップ用に構成されたボリュームのリスト。使用できる環境変数について詳しくは、スクリプトに次の行を追加してください。echo printenv >> /tmp/backup_status.log