Skip to content

Commit a43314c

Browse files
authored
Merge pull request #279 from yuki462-b/discovery-scripts-5.2.1
chore: updating watson discovery backup restore script for 5.2.1.
2 parents 1fafd74 + bfe7da2 commit a43314c

9 files changed

Lines changed: 323 additions & 16 deletions

discovery-data/latest/elastic-backup-restore.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ if [ ${COMMAND} = 'backup' ] ; then
436436
if [ $(compare_version ${WD_VERSION} "4.7.0") -lt 0 ] ; then
437437
# Clean up MinIO
438438
start_minio_port_forward
439-
"${MC}" "${MC_OPTS[@]}" config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
439+
mc_set_alias
440440
if [ -n "$("${MC}" "${MC_OPTS[@]}" ls wdminio/${ELASTIC_BACKUP_BUCKET}/)" ] ; then
441441
"${MC}" "${MC_OPTS[@]}" rm --recursive --force --dangerous wdminio/${ELASTIC_BACKUP_BUCKET}/ > /dev/null
442442
fi
@@ -526,7 +526,7 @@ if [ "${COMMAND}" = 'restore' ] ; then
526526
tar "${ELASTIC_TAR_OPTIONS[@]}" -xf ${BACKUP_FILE} -C ${TMP_WORK_DIR}/${ELASTIC_BACKUP_DIR}/${ELASTIC_BACKUP_BUCKET}/${ELASTIC_SNAPSHOT_PATH}
527527
brlog "INFO" "Transferring data to MinIO..."
528528
start_minio_port_forward
529-
"${MC}" "${MC_OPTS[@]}" config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
529+
mc_set_alias
530530
if [ -n "$("${MC}" "${MC_OPTS[@]}" ls wdminio/${ELASTIC_BACKUP_BUCKET}/)" ] ; then
531531
"${MC}" "${MC_OPTS[@]}" rm --recursive --force --dangerous wdminio/${ELASTIC_BACKUP_BUCKET}/ > /dev/null
532532
fi

discovery-data/latest/lib/function.bash

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,38 @@ gzip_to_plain_tar() {
251251
brlog "DEBUG" "Recompressed backup: ${recompressed_backup_info}"
252252
}
253253

254+
# Create a compressed backup file at the specified directory.
255+
archive_backup() {
256+
local file="$1"
257+
local directory="$2"
258+
shift 2
259+
local opt=("$@")
260+
261+
brlog "INFO" "Archiving backup data as '${file}' in '${directory}' directory"
262+
263+
errlog=$(mktemp)
264+
set +e
265+
tar "${opt[@]}" -cf "${directory}/${file}" --exclude "${file}" -C "${directory}" . 2> "$errlog"
266+
set -e
267+
exitcode=$?
268+
error_output=$(<"$errlog")
269+
rm -f "$errlog"
270+
271+
if [ "$exitcode" -ne 0 ]; then
272+
if echo "$error_output" | grep -qv "file changed as we read it"; then
273+
brlog "ERROR" "tar command failed with unexpected error:"
274+
brlog "ERROR" "$error_output"
275+
exit $exitcode
276+
fi
277+
fi
278+
279+
# Log the backup file size.
280+
ls -lth "${directory}/${file}"
281+
282+
brlog "INFO" "Archive completed successfully."
283+
}
284+
285+
254286
kube_cp_from_local(){
255287
IS_RECURSIVE=false
256288
if [ "$1" = "-r" ] ; then
@@ -263,10 +295,13 @@ kube_cp_from_local(){
263295
shift
264296
POD_BACKUP=$1
265297
shift
298+
299+
brlog "DEBUG" "kube_cp_from_local POD:${POD} LOCAL_BACKUP:${LOCAL_BACKUP} POD_BACKUP: ${POD_BACKUP}"
266300
SPLIT_DIR=./tmp_split_backup
267301
SPLIT_SIZE=${BACKUP_RESTORE_SPLIT_SIZE:-500000000}
268302
LOCAL_BASE_NAME=$(basename "${LOCAL_BACKUP}")
269303
POD_DIST_DIR=$(dirname "${POD_BACKUP}")
304+
oc exec $@ ${POD} -- bash -c "mkdir -p ${POD_DIST_DIR}"
270305

271306
if "${IS_RECURSIVE}" ; then
272307
ORG_POD_BACKUP=${POD_BACKUP}
@@ -322,6 +357,7 @@ kube_cp_to_local(){
322357
SPLIT_DIR=./tmp_split_backup
323358
SPLIT_SIZE=${BACKUP_RESTORE_SPLIT_SIZE:-500000000}
324359
POD_DIST_DIR=$(dirname "${POD_BACKUP}")
360+
brlog "DEBUG" "kube_cp_to_local POD:${POD} LOCAL_BACKUP:${LOCAL_BACKUP} POD_BACKUP:${POD_BACKUP}"
325361

326362
if "${IS_RECURSIVE}" ; then
327363
ORG_POD_BACKUP=${POD_BACKUP}
@@ -494,6 +530,14 @@ has_mc_mirror_retry() {
494530
fi
495531
}
496532

533+
mc_set_alias() {
534+
if "${MC}" alias --help &>/dev/null; then
535+
"${MC}" ${MC_OPTS[@]} --quiet alias set wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
536+
else
537+
"${MC}" ${MC_OPTS[@]} --quiet config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
538+
fi
539+
}
540+
497541
start_minio_port_forward(){
498542
touch ${TMP_WORK_DIR}/keep_minio_port_forward
499543
trap "rm -f ${TMP_WORK_DIR}/keep_minio_port_forward" 0 1 2 3 15

discovery-data/latest/minio-backup-restore.sh

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,18 @@ done
4343
brlog "INFO" "MinIO:"
4444
brlog "INFO" "Tenant name: $TENANT_NAME"
4545

46+
WD_VERSION="$(get_version)"
4647
BACKUP_FILE=${BACKUP_FILE:-"minio_$(date "+%Y%m%d_%H%M%S").tar.gz"}
48+
brlog "DEBUG" "WD_VERSION: $WD_VERSION"
49+
brlog "DEBUG" "BACKUP_FILE: $BACKUP_FILE"
4750

4851
MINIO_ARCHIVE_OPTION="${MINIO_ARCHIVE_OPTION-$DATASTORE_ARCHIVE_OPTION}"
4952
if [ -n "${MINIO_ARCHIVE_OPTION}" ] ; then
5053
read -a MINIO_TAR_OPTIONS <<< ${MINIO_ARCHIVE_OPTION}
5154
else
5255
MINIO_TAR_OPTIONS=("")
5356
fi
57+
brlog "DEBUG" "MINIO_TAR_OPTIONS: ${MINIO_TAR_OPTIONS[@]}"
5458
VERIFY_ARCHIVE=${VERIFY_ARCHIVE:-true}
5559
VERIFY_DATASTORE_ARCHIVE=${VERIFY_DATASTORE_ARCHIVE:-$VERIFY_ARCHIVE}
5660

@@ -61,6 +65,53 @@ rm -rf ${TMP_WORK_DIR}
6165
mkdir -p "${TMP_WORK_DIR}/${MINIO_BACKUP_DIR}"
6266
mkdir -p "${BACKUP_RESTORE_LOG_DIR}"
6367

68+
if [ $(compare_version "${WD_VERSION}" "5.2.1") -ge 0 ] ; then
69+
brlog "DEBUG" "Using aws s3 cli for WD ${WD_VERSION}"
70+
71+
# Prepare s3 pod.
72+
launch_s3_pod
73+
brlog "DEBUG" "S3 pod: ${POD}"
74+
BACKUP_RESTORE_DIR_IN_POD="/tmp/backup-restore-workspace"
75+
S3_BACKUP_DIR="s3_backup"
76+
S3_BACKUP="${MINIO_BACKUP}" # For backword compatibility.
77+
_oc_cp "${SCRIPT_DIR}/src" ${POD}:${BACKUP_RESTORE_DIR_IN_POD}/ ${OC_ARGS}
78+
_oc_cp "${SCRIPT_DIR}/lib" ${POD}:${BACKUP_RESTORE_DIR_IN_POD}/ ${OC_ARGS}
79+
_oc_cp "${SCRIPT_DIR}/src/s3-backup-restore-in-pod.sh" "${POD}:${BACKUP_RESTORE_DIR_IN_POD}/s3-backup-restore-in-pod.sh" ${OC_ARGS}
80+
81+
if [ "${COMMAND}" = "restore" ] ; then
82+
brlog "INFO" "Transferring backup data ${BACKUP_FILE} into ${POD} ..."
83+
kube_cp_from_local ${POD} "${BACKUP_FILE}" "${BACKUP_RESTORE_DIR_IN_POD}/${S3_BACKUP_DIR}/${S3_BACKUP}" ${OC_ARGS}
84+
fi
85+
86+
# Run the backup/restore script.
87+
brlog "INFO" "Running backup restore script in s3 pod ..."
88+
# TODO this takes a while without logging any message at stdout.
89+
run_cmd_in_pod ${POD} \
90+
"${BACKUP_RESTORE_DIR_IN_POD}/s3-backup-restore-in-pod.sh ${COMMAND} --log-level ${BACKUP_RESTORE_LOG_LEVEL} --backup-dir ${BACKUP_RESTORE_DIR_IN_POD}/${S3_BACKUP_DIR} --file ${S3_BACKUP}" \
91+
${OC_ARGS}
92+
result=$(get_last_cmd_result_in_pod)
93+
brlog "DEBUG" "s3 br script result: ${result}"
94+
95+
if [ "${COMMAND}" = "backup" ] ; then
96+
brlog "INFO" "Transferring backup data"
97+
kube_cp_to_local ${POD} "${BACKUP_FILE}" "${BACKUP_RESTORE_DIR_IN_POD}/${S3_BACKUP_DIR}/${S3_BACKUP}" ${OC_ARGS}
98+
if "${VERIFY_DATASTORE_ARCHIVE}" && brlog "INFO" "Verifying backup archive" && ! tar "${MINIO_TAR_OPTIONS[@]}" -tf ${BACKUP_FILE} &> /dev/null ; then
99+
brlog "ERROR" "Backup file is broken, or does not exist."
100+
exit 1
101+
fi
102+
fi
103+
104+
# Cleanup.
105+
oc ${OC_ARGS} exec ${POD} -- bash -c "cd ${BACKUP_RESTORE_DIR_IN_POD}; ls | xargs rm -rf"
106+
oc ${OC_ARGS} delete -f "${S3_JOB_FILE}"
107+
rm -rf ${TMP_WORK_DIR}
108+
if [ -z "$(ls tmp)" ] ; then
109+
rm -rf tmp
110+
fi
111+
brlog "INFO" "Done"
112+
exit 0
113+
fi
114+
64115
if "${BACKUP_RESTORE_IN_POD}" ; then
65116
BACKUP_RESTORE_DIR_IN_POD="/tmp/backup-restore-workspace"
66117
launch_s3_pod
@@ -128,9 +179,9 @@ if [ "${COMMAND}" = "backup" ] ; then
128179
brlog "INFO" "Start backup minio"
129180
brlog "INFO" "Backup data..."
130181
start_minio_port_forward
131-
"${MC}" "${MC_OPTS[@]}" --quiet config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
182+
mc_set_alias
132183
EXCLUDE_OBJECTS=$(cat "${SCRIPT_DIR}/src/minio_exclude_paths")
133-
if [ $(compare_version "$(get_version)" "4.7.0") -ge 0 ] ; then
184+
if [ $(compare_version "${WD_VERSION}" "4.7.0") -ge 0 ] ; then
134185
EXCLUDE_OBJECTS+=$'\n'
135186
EXCLUDE_OBJECTS+="$(cat "${SCRIPT_DIR}/src/mcg_exclude_paths")"
136187
fi
@@ -192,7 +243,7 @@ if [ "${COMMAND}" = "restore" ] ; then
192243
tar "${MINIO_TAR_OPTIONS[@]}" -xf ${BACKUP_FILE} -C ${TMP_WORK_DIR}/${MINIO_BACKUP_DIR}
193244
brlog "INFO" "Restoring data..."
194245
start_minio_port_forward
195-
"${MC}" "${MC_OPTS[@]}" --quiet config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
246+
mc_set_alias
196247
for bucket_path in "${TMP_WORK_DIR}/${MINIO_BACKUP_DIR}"/*
197248
do
198249
bucket="$(basename "${bucket_path}")"

discovery-data/latest/mt-mt-migration.sh

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,18 @@ do
225225
##############
226226

227227
brlog "INFO" " Migrating MinIO contents"
228-
229228
bucket_suffix="$(get_bucket_suffix)"
229+
_oc_cp "${SCRIPT_DIR}/src" ${MC_POD}:${BACKUP_RESTORE_DIR_IN_POD}/ ${OC_ARGS}
230+
_oc_cp "${SCRIPT_DIR}/lib" ${MC_POD}:${BACKUP_RESTORE_DIR_IN_POD}/ ${OC_ARGS}
231+
_oc_cp "${SCRIPT_DIR}/src/minio-mt-migration.sh" "${MC_POD}:${BACKUP_RESTORE_DIR_IN_POD}/minio-mt-migration.sh" ${OC_ARGS}
230232
if [ -n "${bucket_suffix}" ] ; then
231-
run_script_in_pod ${MC_POD} "${SCRIPT_DIR}/src/minio-mt-migration.sh" "-s ${src} -t ${dst} --suffix ${bucket_suffix}"
233+
run_cmd_in_pod ${MC_POD} \
234+
"${BACKUP_RESTORE_DIR_IN_POD}/minio-mt-migration.sh -s ${src} -t ${dst} --suffix ${bucket_suffix}" \
235+
${OC_ARGS}
232236
else
233-
run_script_in_pod ${MC_POD} "${SCRIPT_DIR}/src/minio-mt-migration.sh" "-s ${src} -t ${dst}"
237+
run_cmd_in_pod ${MC_POD} \
238+
"${BACKUP_RESTORE_DIR_IN_POD}/minio-mt-migration.sh -s ${src} -t ${dst}" \
239+
${OC_ARGS}
234240
fi
235241

236242
##############

discovery-data/latest/src/elastic-backup-restore-in-pod.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ function clean_up(){
6767
}
6868

6969
if [ "${COMMAND}" = "backup" ] ; then
70-
"${MC}" ${MC_OPTS[@]} config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
70+
mc_set_alias
7171
if [ -n "$("${MC}" ${MC_OPTS[@]} ls wdminio/${ELASTIC_BACKUP_BUCKET}/)" ] ; then
7272
"${MC}" ${MC_OPTS[@]} rm --recursive --force --dangerous wdminio/${ELASTIC_BACKUP_BUCKET}/ > /dev/null
7373
fi
@@ -130,7 +130,7 @@ elif [ "${COMMAND}" = "restore" ] ; then
130130
tar "${ELASTIC_TAR_OPTIONS[@]}" -xf ${ELASTIC_BACKUP} -C ${TMP_WORK_DIR}/${ELASTIC_BACKUP_DIR}/${ELASTIC_BACKUP_BUCKET}/${ELASTIC_SNAPSHOT_PATH}
131131
rm -f ${ELASTIC_BACKUP}
132132
brlog "INFO" "Transferring data to MinIO..."
133-
"${MC}" "${MC_OPTS[@]}" config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
133+
mc_set_alias
134134
if [ -n "$("${MC}" "${MC_OPTS[@]}" ls wdminio/${ELASTIC_BACKUP_BUCKET}/)" ] ; then
135135
"${MC}" "${MC_OPTS[@]}" rm --recursive --force --dangerous wdminio/${ELASTIC_BACKUP_BUCKET}/ > /dev/null
136136
fi

discovery-data/latest/src/minio-backup-restore-in-pod.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ S3_BUCKETS=${S3_BUCKETS:-}
5151
if [ "${COMMAND}" = "backup" ] ; then
5252
brlog "INFO" "Start backup minio"
5353
brlog "INFO" "Backup data..."
54-
"${MC}" "${MC_OPTS[@]}" --quiet config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
54+
mc_set_alias
5555
EXCLUDE_OBJECTS=$(cat "${SCRIPT_DIR}/src/minio_exclude_paths")
5656
if [ $(compare_version "$(get_version)" "4.7.0") -ge 0 ] ; then
5757
EXCLUDE_OBJECTS+=$'\n'
@@ -106,7 +106,7 @@ if [ "${COMMAND}" = "restore" ] ; then
106106
tar "${MINIO_TAR_OPTIONS[@]}" -xf ${MINIO_BACKUP} -C ${TMP_WORK_DIR}/${MINIO_BACKUP_DIR}
107107
rm -f ${MINIO_BACKUP}
108108
brlog "INFO" "Restoring data..."
109-
"${MC}" "${MC_OPTS[@]}" --quiet config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
109+
mc_set_alias
110110
for bucket_path in "${TMP_WORK_DIR}/${MINIO_BACKUP_DIR}"/*
111111
do
112112
bucket="$(basename "${bucket_path}")"

discovery-data/latest/src/minio-mt-migration.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
set -euo pipefail
33

44
TMP_WORK_DIR="/tmp/backup-restore-workspace"
5-
5+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
6+
source "${SCRIPT_DIR}/lib/function.bash"
67

78
show_help(){
89
cat << EOS
@@ -66,8 +67,7 @@ export HOME="${TMP_WORK_DIR}"
6667
export MINIO_CONFIG_DIR="${TMP_WORK_DIR}/.mc"
6768
MC_OPTS=(--config-dir ${MINIO_CONFIG_DIR} --insecure)
6869

69-
"${MC}" ${MC_OPTS[@]} --quiet config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
70-
70+
mc_set_alias
7171
for LOCATION in "cnm${bucket_suffix}/mt" "common${bucket_suffix}/mt" "exported-documents${bucket_suffix}"; do
7272
FOLDERS=$( ("${MC}" ${MC_OPTS[@]} --quiet --json ls "wdminio/${LOCATION}/${source}" || echo '{}') | jq -r '.key|values')
7373
for FOLDER in ${FOLDERS[@]}; do

0 commit comments

Comments
 (0)