From 0b19ba8e04bdd7cc790be65595b77eabac3c52e4 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Tue, 11 Jul 2023 17:03:13 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=90=84=E3=82=B3=E3=83=9E=E3=83=B3?= =?UTF-8?q?=E3=83=89=E3=81=94=E3=81=A8=E3=81=AB=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=83=8F=E3=83=B3=E3=83=89=E3=83=AA=E3=83=B3=E3=82=B0=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-dbdump/src/jobctrl_dbdump.py | 27 ++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/ecs/jskult-dbdump/src/jobctrl_dbdump.py b/ecs/jskult-dbdump/src/jobctrl_dbdump.py index dcc02211..dc688f69 100644 --- a/ecs/jskult-dbdump/src/jobctrl_dbdump.py +++ b/ecs/jskult-dbdump/src/jobctrl_dbdump.py @@ -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