Skip to content

Commit 81aa99e

Browse files
github-actions[bot]bennotieno
authored andcommitted
Update ConfigMap with latest script changes
1 parent f27007a commit 81aa99e

1 file changed

Lines changed: 65 additions & 8 deletions

File tree

qdrant-backup-restore/k8s/configmap-script.yaml

Lines changed: 65 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,14 @@ data:
1616
QDRANT_SNAPSHOT_RECOVERY_HISTORY_FILE="snapshot_recovery_history"
1717
QDRANT_ALIAS_RECOVERY_HISTORY_FILE="alias_recovery_history"
1818
QDRANT_COLLECTION_ALIASES="collection_aliases"
19+
BACKUP_COLLECTION_ALIASES_ON_S3=${BACKUP_COLLECTION_ALIASES_ON_S3:-false}
20+
QDRANT_COLLECTION_ALIASES_BACKUP_FOLDER="collection_aliases_store"
1921
QDRANT_WAIT_ON_TASK=${QDRANT_WAIT_ON_TASK:-true}
2022
CURL_TIMEOUT="${CURL_TIMEOUT:-1800}"
2123
QDRANT_S3_ALIAS="qdrant_s3_snaphost"
2224
QDRANT_S3_LINK_EXPIRY_DURATION="${QDRANT_S3_LINK_EXPIRY_DURATION:-3600s}"
2325
QDRANT_HTTP_PORT="${QDRANT_HTTP_PORT:-6333}"
26+
QDRANT_COLLECTION_ALIASES_STABLE_FILE="${QDRANT_COLLECTION_ALIASES_STABLE_FILE:-collection_aliases}"
2427
2528
declare -a peer_uri_map;
2629
# printf wrapper helper
@@ -505,6 +508,8 @@ data:
505508
exit 1
506509
fi
507510
511+
: > "$QDRANT_COLLECTION_ALIASES"
512+
508513
local colla_length=0
509514
colla_length=$(jq -c '(.result.aliases // []) | length' <<< "$result")
510515
@@ -519,14 +524,41 @@ data:
519524
done <<< "$_result"
520525
fi
521526
527+
if [ "$BACKUP_COLLECTION_ALIASES_ON_S3" = "true" ]; then
528+
529+
setup_s3_storage
530+
531+
local ts
532+
ts=$(date '+%Y-%m-%d_%H-%M-%S')
533+
534+
local base_path="$QDRANT_S3_ALIAS/$QDRANT_S3_BUCKET_NAME/$QDRANT_COLLECTION_ALIASES_BACKUP_FOLDER"
535+
536+
local versioned_dest="$base_path/${QDRANT_COLLECTION_ALIASES}-$ts"
537+
local stable_dest="$base_path/${QDRANT_COLLECTION_ALIASES}"
538+
539+
_printf "backing up collection aliases to s3 bucket %s\n" "$QDRANT_S3_BUCKET_NAME"
540+
541+
if ! mc cp "$QDRANT_COLLECTION_ALIASES" "$versioned_dest"; then
542+
_printf "failed to upload versioned collection aliases backup to %s\n" "$QDRANT_S3_BUCKET_NAME"
543+
exit 1
544+
fi
545+
546+
if ! mc cp "$versioned_dest" "$stable_dest"; then
547+
_printf "failed to update collection aliases stable backup pointer in %s\n" "$QDRANT_S3_BUCKET_NAME"
548+
exit 1
549+
fi
550+
551+
_printf "successfully backed up collection aliases to s3 bucket %s\n" "$QDRANT_S3_BUCKET_NAME"
552+
fi
553+
522554
_printf "%s file updated,found %d collection alias(es)!\n" "$QDRANT_COLLECTION_ALIASES" "$colla_length"
523555
}
524556
525557
# restores collection alias to a qdrant node and appends progress to $QDRANT_ALIAS_RECOVERY_HISTORY_FILE
526558
recover_collection_alias() {
527-
local host="${source_hosts[0]}"
528559
local collection_name="$1"
529560
local alias_name="$2"
561+
local host="$3"
530562
local status=""
531563
local result=""
532564
@@ -549,7 +581,7 @@ data:
549581
550582
if [ "$status" != "ok" ]; then
551583
((failed_recovered_colla_count=failed_recovered_colla_count+1))
552-
_printf "[%s] failed to fetch collection alias %s:%s, got this instead %s\n" "$host" "$collection_name" "$alias_name" "${result//[[:space:]]/}"
584+
_printf "[%s] failed to restore collection alias %s:%s, got this instead %s\n" "$host" "$collection_name" "$alias_name" "${result//[[:space:]]/}"
553585
return
554586
fi
555587
@@ -559,6 +591,22 @@ data:
559591
560592
# restores collection aliases to a qdrant node and appends progress to $QDRANT_ALIAS_RECOVERY_HISTORY_FILE
561593
recover_collection_aliases() {
594+
595+
local host="${restore_hosts[0]}"
596+
597+
598+
if [ "$BACKUP_COLLECTION_ALIASES_ON_S3" = "true" ]; then
599+
600+
setup_s3_storage
601+
602+
if mc cp "$QDRANT_S3_ALIAS/$QDRANT_S3_BUCKET_NAME/$QDRANT_COLLECTION_ALIASES_BACKUP_FOLDER/$QDRANT_COLLECTION_ALIASES_STABLE_FILE" "$QDRANT_COLLECTION_ALIASES"; then
603+
_printf "collection aliases restored from s3 bucket %s\n" "$QDRANT_S3_BUCKET_NAME"
604+
else
605+
_printf "failed to restore collection aliases file (%s) from s3 bucket %s\n" "$QDRANT_COLLECTION_ALIASES_STABLE_FILE" "$QDRANT_S3_BUCKET_NAME"
606+
exit 1
607+
fi
608+
fi
609+
562610
if [[ ! -s "$QDRANT_COLLECTION_ALIASES" ]]; then
563611
get_collection_aliases
564612
fi
@@ -571,8 +619,7 @@ data:
571619
colla_count=$(wc -l < $QDRANT_COLLECTION_ALIASES)
572620
recovered_colla_count=0
573621
failed_recovered_colla_count=0
574-
575-
local host="${restore_hosts[0]}"
622+
colla_skipped_count=0
576623
577624
touch $QDRANT_ALIAS_RECOVERY_HISTORY_FILE
578625
@@ -586,12 +633,13 @@ data:
586633
587634
if [ "$history_count" -gt 0 ]; then
588635
_printf "[%s] collection alias %s:%s already recovered, skipping!\n" "$host" "$collection_name" "$alias_name"
636+
((colla_skipped_count=colla_skipped_count+1))
589637
continue
590638
fi
591-
recover_collection_alias "$collection_name" "$alias_name"
639+
recover_collection_alias "$collection_name" "$alias_name" "$host"
592640
done < $QDRANT_COLLECTION_ALIASES
593641
594-
_printf "recovery summary: %d/%d collection aliases recovered, %d failed.\n" "$recovered_colla_count" "$colla_count" "$failed_recovered_colla_count"
642+
_printf "recovery summary: %d/%d collection aliases recovered, %d failed, %d skipped.\n" "$recovered_colla_count" "$colla_count" "$failed_recovered_colla_count" "$colla_skipped_count"
595643
596644
colla_count=0
597645
recovered_colla_count=0
@@ -695,9 +743,9 @@ data:
695743
QDRANT_S3_SECRET_ACCESS_KEY - S3 secret access key (for S3 operations)
696744
QDRANT_S3_BUCKET_NAME - S3 bucket name (for S3 operations)
697745
GET_PEERS_FROM_CLUSTER_INFO - Set to "true" to auto-discover peers
698-
CURL_TIMEOUT - Curl timeout in seconds (default: 300)
746+
CURL_TIMEOUT - Curl timeout in seconds (default: 1800)
699747
QDRANT_WAIT_ON_TASK - Waits for async tasks to finish
700-
QDRANT_SNAPSHOT_DATETIME_FILTER - Specify the datea and time filter for snapshots to be fetched and/or restored, format YYYY-mm-dd, e,g "2026-01-29-11-44", default value is empty so it will fetch every snapshot!!
748+
QDRANT_SNAPSHOT_DATETIME_FILTER - Specify the date and time filter for snapshots to be fetched and/or restored, format YYYY-mm-dd, e,g "2026-01-29-11-44", default value is empty so it will fetch every snapshot!!
701749
Examples:
702750
$0 get_snap
703751
$0 recover_snap
@@ -747,11 +795,20 @@ data:
747795
local DATETIME="${QDRANT_SNAPSHOT_DATETIME_FILTER:-}"
748796
generate_snapshot_file_from_s3 "$DATETIME"
749797
elif [ "$command" = "create_snap" ] || [ "$command" = "create_snapshot" ]; then
798+
# create collection snapshots
750799
create_collection_snapshot
800+
801+
# backup collection aliases to s3 bucket
802+
get_collection_aliases
803+
751804
elif [ "$command" = "recover_snap" ]; then
752805
setup_s3_storage
753806
local DATETIME="${QDRANT_SNAPSHOT_DATETIME_FILTER:-}"
754807
recover_collection_snapshots "$DATETIME"
808+
809+
# restore collection aliases from s3 bucket
810+
recover_collection_aliases
811+
755812
elif [ "$command" = "get_colla" ] || [ "$command" = "get_collection_alias" ]; then
756813
get_collection_aliases
757814
elif [ "$command" = "recover_colla" ] || [ "$command" = "recover_collection_alias" ]; then

0 commit comments

Comments
 (0)