質問
HULFT Square のメンテナンス時間帯にスケジュールジョブの実行時間が重複している場合、どのようなリスクがあり、どのように回避すればよいですか?
回答
メンテナンスの時間帯はサービス再起動によりスクリプトやジョブが予期せぬ挙動をする可能性があります。そのため、スケジュールジョブの実行をスキップしてメンテナンス後の時間帯に実行することを推奨します。
スキップする方法は以下の3つがあります。
1. カレンダーで対象日を休日設定し、スケジュールジョブに設定する
- スケジュールジョブの繰り返しが「日」の日次設定の場合に有効です。
- 休日オプションは「休日に実行する」に設定する必要があります。
- 繰り返しが「秒」「分」「時」の場合はこの方法は有効ではありません。
2. [start] から [end] に引くだけのスクリプトを新たに作成し、対象日のみそのスクリプトをスケジュールジョブに設定する
- スケジュールジョブの繰り返しが「日」の日次設定の場合に有効です。
- 本番スクリプトの処理は実行されず、リスクなく通過するのみとなります。
- メンテナンス終了後は元のスクリプトに戻す必要があります。
3. メンテナンス直前にスケジュールジョブを手動で無効化し、メンテナンス終了後に手動で有効化する
- スケジュールジョブのステータスを手動で無効化することで、スケジュール時刻が到来してもスクリプトが実行されないようにできます。
補足
やむを得ずメンテナンス時間帯にジョブを実行した場合は、以下のリスクがあります。
■ データ不整合について
BoxからのCSV取得中やDBへの書き込み途中にサービスが停止した場合、データが不整合な状態となる可能性があります。メンテナンス後にイベントログから処理内容および処理結果を確認し、不整合が発生していた場合はリトライまたは正しい状態に戻す対応が必要です。
■ トランザクション・ロールバックについて
通常はコミットまたはロールバックされることを想定していますが、メンテナンス中は予期せぬ挙動が起きる可能性があります。メンテナンス後にイベントログからコミット/ロールバックの結果を確認してください。
■ 翌日以降のジョブ実行への影響について
メンテナンス中のジョブ失敗が原因でメンテナンス終了後のジョブ・スクリプトの実行自体に影響が発生した事例はありません。ただし、追加書き込み・追加挿入など前回の実行結果を前提とした処理運用の場合は影響が残る可能性があります。また、処理中にサービスが再起動されるとスクリプトのステータスが「実行中」のまま残ることがあります。
コメント
0件のコメント
記事コメントは受け付けていません。