feat: 各コマンドごとにエラーハンドリングするように修正
This commit is contained in:
parent
dbfe62e30b
commit
0b19ba8e04
@ -62,8 +62,7 @@ def exec():
|
||||
file_name = f'backup_rds_src05_{converted_value}.gz'
|
||||
s3_file_name = f's3://{environment.JSKULT_BACKUP_BUCKET}/{environment.DUMP_BACKUP_FOLDER}/{dt_now.year}/{dt_now.strftime("%m")}/{dt_now.strftime("%d")}/{file_name}'
|
||||
|
||||
# 'mysqldump --login-path=dwhadmin --no-tablespaces --skip-column-statistics --single-transaction --set-gtid-purged=OFF dwh > /data/mountdwh/backup/%s/before/'
|
||||
# mysqldumpコマンドを実行する
|
||||
# mysqldumpコマンドを実行し、dumpを取得する
|
||||
command = [
|
||||
'mysqldump',
|
||||
f'--defaults-file={my_cnf_path}',
|
||||
@ -81,22 +80,32 @@ def exec():
|
||||
gzip_process = subprocess.Popen(['gzip'], stdin=mysqldump_process.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
# aws s3 cpコマンドを実行してアップロードする
|
||||
s3_cp_process = subprocess.Popen(['aws', 's3', 'cp', '-', s3_file_name], stdin=gzip_process.stdout, stderr=subprocess.PIPE)
|
||||
# 出力を取得する
|
||||
# mysqldumpの標準出力をgzipに接続したため、標準出力をクローズする
|
||||
mysqldump_process.stdout.close()
|
||||
# gzipの標準出力をaws s3 cpに接続したため、標準出力をクローズする
|
||||
gzip_process.stdout.close()
|
||||
|
||||
# パイプラインを実行し、エラーハンドリング
|
||||
_, error = mysqldump_process.communicate()
|
||||
if mysqldump_process.returncode != 0:
|
||||
raise BatchOperationException(error.decode('utf-8'))
|
||||
|
||||
_, error = gzip_process.communicate()
|
||||
if gzip_process.returncode != 0:
|
||||
raise BatchOperationException(error.decode('utf-8'))
|
||||
|
||||
_, error = s3_cp_process.communicate()
|
||||
if s3_cp_process.returncode != 0:
|
||||
print("Error: ", error.decode("utf-8"))
|
||||
raise Exception('Error')
|
||||
# dump処理状態区分を正常終了に更新
|
||||
raise BatchOperationException(error.decode('utf-8'))
|
||||
|
||||
# # dump処理状態区分を正常終了に更新
|
||||
try:
|
||||
update_dump_status_kbn_in_complete()
|
||||
except BatchOperationException as e:
|
||||
logger.exception(f'dump処理状態区分更新(処理中→正常終了) エラー(異常終了):{e}')
|
||||
return constants.BATCH_EXIT_CODE_SUCCESS
|
||||
|
||||
# 正常終了を保守ユーザーに通知
|
||||
logger.info('[NOTICE]日次バッチ処理前DBダンプ取得:終了(正常終了)')
|
||||
logger.info('日次バッチ処理前DBダンプ取得:終了(正常終了)')
|
||||
return constants.BATCH_EXIT_CODE_SUCCESS
|
||||
|
||||
except Exception as e:
|
||||
@ -105,6 +114,6 @@ def exec():
|
||||
update_dump_status_kbn_in_error()
|
||||
except BatchOperationException as e:
|
||||
logger.exception(f'dump処理状態区分更新(処理中→エラー) エラー(異常終了):{e}')
|
||||
raise constants.BATCH_EXIT_CODE_SUCCESS
|
||||
raise e
|
||||
logger.exception(f'日次バッチ処理前DBダンプ取得中に想定外のエラーが発生しました :{e}')
|
||||
raise e
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user