
Milvus
1 前言
一个问题,一篇文章,一出故事。
笔者需要创建一个用于备份milvus的base shell脚本,脚本每天3点会被crontab触发,将使用如下命令执行备份,
milvus-backup create --config /etc/milvus-backup/backup.yaml
执行备份前,将使用如下命令检查配置否正常,如果正常则执行备份,否则脚本自动退出,
milvus-backup check --config /etc/milvus-backup/backup.yaml
将使用如下命令返回已经完成备份的备份列表,
milvus-backup list --config /etc/milvus-backup/backup.yaml
将使用如下命令删除超过7天的周一到周六的备份,周日的备份如果超过30天则执行删除,否则保留,请使用如下命令执行删除操作,
milvus-backup delete -n "backup_2025_09_17_08_10_09_495367775" --config /etc/milvus-backup/backup.yaml
2 最佳实践
2.1 备份环境
2.2 备份脚本
2.2.1 创建备份脚本
vim ~/scripts/backup-milvus.sh
加入如下配置,
#!/bin/bash source /etc/profile # Configuration file path configFile="/etc/milvus-backup/backup.yaml" # Log file path logFile="/var/log/milvus_backup.log" # Function to log messages log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$logFile" } # Check if the configuration is valid if ! milvus-backup check --config "$configFile"; then log "Backup configuration check failed, exiting script." exit 1 fi # Execute backup milvus-backup create --config "$configFile" log "Backup completed successfully." # Get current date currentDate=$(date +%Y-%m-%d) # Get backup list backupList=$(milvus-backup list --config "$configFile" | grep "^backup_") # Iterate over the backup list while IFS= read -r backupName; do # Extract backup date backupDate=$(echo "$backupName" | grep -oP '\d{4}_\d{2}_\d{2}') # Convert date format to YYYY-MM-DD backupDateFormatted=$(echo "$backupDate" | sed 's/_/-/g') # Calculate date difference backupTimestamp=$(date -d "$backupDateFormatted" +%s) currentTimestamp=$(date -d "$currentDate" +%s) diffDays=$(( (currentTimestamp - backupTimestamp) / 86400 )) # Check backup deletion conditions dayOfWeek=$(date -d "$backupDateFormatted" +%u) # 1 (Monday) to 7 (Sunday) if [[ $dayOfWeek -lt 7 ]]; then # Monday to Saturday if [[ $diffDays -gt 7 ]]; then milvus-backup delete -n "$backupName" --config "$configFile" log "Deleted backup: $backupName" fi else # Sunday if [[ $diffDays -gt 30 ]]; then milvus-backup delete -n "$backupName" --config "$configFile" log "Deleted backup: $backupName" fi fi done <<< "$backupList"
2.2.2 测试脚本执行
bash ~/scripts/backup-milvus.sh
2.2.3 设置计划任务
crontab -e
加入如下设置,
0 3 * * * bash ~/scripts/backup-milvus.sh
没有评论