@@ -18,11 +18,7 @@ LOGICAL_BACKUP_S3_RETENTION_TIME=${LOGICAL_BACKUP_S3_RETENTION_TIME:=""}
1818LOGICAL_BACKUP_S3_ENDPOINT=${LOGICAL_BACKUP_S3_ENDPOINT:- }
1919LOGICAL_BACKUP_S3_REGION=${LOGICAL_BACKUP_S3_REGION:- " us-west-1" }
2020
21- function estimate_size {
22- # Connects to MariaDB to calculate data size for S3 multipart upload optimization
23- mariadb -h " $MARIADB_HOST " -u " $MARIADB_USER " -p" $MARIADB_PASSWORD " \
24- --skip-ssl -Nsr -e " ${ALL_DB_SIZE_QUERY} " < /dev/null
25- }
21+
2622
2723function dump {
2824 echo " Taking dump from ${MARIADB_HOST} using mariadb-dump for database ${MARIADB_DATABASE} " >&2
@@ -101,63 +97,68 @@ function aws_delete_outdated {
10197}
10298
10399function aws_upload {
104- local EXPECTED_SIZE =" $1 "
100+ local FILE_PATH =" $1 "
105101 PATH_TO_BACKUP=" s3://${LOGICAL_BACKUP_S3_BUCKET} /${CLUSTER_NAME} /${LOGICAL_BACKUP_S3_BUCKET_SCOPE_SUFFIX} /logical_backups/$( date +%s) .sql.gz"
106102
107103 args=()
108- [[ -n " ${EXPECTED_SIZE} " ]] && args+=(" --expected-size=${EXPECTED_SIZE} " )
109104 [[ -n " ${LOGICAL_BACKUP_S3_ENDPOINT} " ]] && args+=(" --endpoint-url=${LOGICAL_BACKUP_S3_ENDPOINT} " )
110105 [[ -n " ${LOGICAL_BACKUP_S3_REGION} " ]] && args+=(" --region=${LOGICAL_BACKUP_S3_REGION} " )
111106
112107 echo " Uploading dump to S3: ${PATH_TO_BACKUP} "
113- echo " ${args[@]} "
114- aws s3 cp - " $PATH_TO_BACKUP " " ${args[@]} "
108+ aws s3 cp " ${FILE_PATH} " " $PATH_TO_BACKUP " " ${args[@]} "
115109}
116110
117111function upload {
112+ local FILE_PATH=" $1 "
118113 case $LOGICAL_BACKUP_PROVIDER in
119114 " s3" )
120- aws_upload $(( $(estimate_size) / DUMP_SIZE_COEFF ))
115+ aws_upload " $FILE_PATH "
121116 aws_delete_outdated
122117 ;;
123118 " az" )
124- # Azure requires a physical file for 'az storage blob upload' in this context
125- dump | compress > /tmp/mariadb-backup.sql.gz
126- az_upload /tmp/mariadb-backup.sql.gz
127- rm /tmp/mariadb-backup.sql.gz
119+ az_upload " $FILE_PATH "
128120 ;;
129121 esac
130122}
131123
132124# Execution Logic
133125if [ " $LOGICAL_BACKUP_PROVIDER " == " az" ]; then
134- upload
135- else
136- # Stream dump to a local file for debugging AND upload to S3
126+ # Stream dump to a local file for debugging AND upload logic
137127 # Saving:
138- # 1. /tmp/raw_dump.sql - The uncompressed output from mariadb-dump (Check this for plain text errors)
128+ # 1. /tmp/raw_dump.sql - The uncompressed output from mariadb-dump
139129 # 2. /tmp/dump_stderr.log - The verbose logs and errors from mariadb-dump
140- # 3. /tmp/final_upload.sql.gz - The valid gzip file sent to S3
130+ # 3. /tmp/final_upload.sql.gz - The valid gzip file to be uploaded
141131
142- echo " Starting debug pipeline ..."
143- dump 2> /tmp/dump_stderr.log | tee /tmp/raw_dump.sql | compress | tee /tmp/final_upload.sql.gz | upload
132+ echo " Starting backup creation ..."
133+ dump 2> /tmp/dump_stderr.log | tee /tmp/raw_dump.sql | compress > /tmp/final_upload.sql.gz
144134
145- # Capture status immediately!
135+ # Capture status of the generation pipeline
146136 PIPELINE_STATUS=(" ${PIPESTATUS[@]} " )
137+ echo " Backup generation finished with status: ${PIPELINE_STATUS[*]} "
147138
148- echo " Backup finished with status: ${PIPELINE_STATUS[*]} "
139+ # Debug output
149140 echo " DEBUG FILES GENERATED:"
150141 echo " 1. Stderr Log: /tmp/dump_stderr.log"
151142 echo " 2. Raw Dump: /tmp/raw_dump.sql"
152143 echo " 3. Gzip File: /tmp/final_upload.sql.gz"
153-
154- echo " Showing first 10 lines of raw dump (to check if it's SQL or error text):"
144+ echo " Showing first 10 lines of raw dump:"
155145 head -n 10 /tmp/raw_dump.sql || echo " Empty file"
146+
147+ if [[ ${PIPELINE_STATUS[0]} -ne 0 || ${PIPELINE_STATUS[1]} -ne 0 || ${PIPELINE_STATUS[2]} -ne 0 ]]; then
148+ echo " Backup generation failed! Skipping upload."
149+ ERRORCOUNT=$(( ERRORCOUNT + 1 ))
150+ else
151+ echo " Backup generation successful. Proceeding to upload..."
152+ upload " /tmp/final_upload.sql.gz"
153+
154+ if [ $? -ne 0 ]; then
155+ echo " Upload failed!"
156+ ERRORCOUNT=$(( ERRORCOUNT + 1 ))
157+ fi
158+ fi
156159
157- echo " Sleeping for 500s to allow manual debugging..."
160+ echo " Sleeping for 1000s to allow manual debugging..."
158161 sleep 1000
159-
160162
161- [[ ${PIPELINE_STATUS[0]} != 0 || ${PIPELINE_STATUS[1]} != 0 || ${PIPELINE_STATUS[2]} != 0 || ${PIPELINE_STATUS[3]} != 0 ]] && (( ERRORCOUNT += 1 ))
162163 exit $ERRORCOUNT
163164fi
0 commit comments