首页 > 数据库 >Milvus向量数据库备份方案

Milvus向量数据库备份方案

时间:2024-08-02 18:59:55浏览次数:14  
标签:minio 备份 Milvus 向量 ---------- 033 backup milvus

背景

向量数据库集群只有一个,如果集群出问题将影响整个业务,所以需要对向量数据库中的数据做定时备份
现有两个milvus集群,方案如下
在这里插入图片描述
通过对milvus集群的了解发现其数据的存储是集群中的minio组件,所以做的整个数据备份及恢复是基于minio来做的。
首先是在需要做备份的集群中对minio数据做备份(milvus-backup),然后通过rclone将备份数据传输到备份集群的minio集群中,然后利用py脚本来对备份集群进行数据清理,然后恢复最新的备份数据到集群中,最后加载到内存中并进行数据的校验和对比最后告警出来

milvus-backup备份

工具地址milvus-backup下载地址
需要配置好config文件
这里配置两个,一个是备份生产数据的,一个是在备份集群中恢复数据的
此处只做一个示例

# Configures the system log output.
log:
  level: info # Only supports debug, info, warn, error, panic, or fatal. Default 'info'.
  console: true # whether print log to console
  file:
    rootPath: "logs/backup.log"

http:
  simpleResponse: true

# milvus proxy address, compatible to milvus.yaml
milvus:
  address: 
  port: 19530
  authorizationEnabled: false
  # tls mode values [0, 1, 2]
  # 0 is close, 1 is one-way authentication, 2 is two-way authentication.
  tlsMode: 0
  user: "root"
  password: "Milvus"

# Related configuration of minio, which is responsible for data persistence for Milvus.
minio:
  # cloudProvider: "minio" # deprecated use storageType instead
  storageType: "minio" # support storage type: local, minio, s3, aws, gcp, ali(aliyun), azure, tc(tencent)

  address:  # Address of MinIO/S3
  port: 9000   # Port of MinIO/S3
  accessKeyID: minioadmin  # accessKeyID of MinIO/S3
  secretAccessKey: minioadmin # MinIO/S3 encryption string
  useSSL: false # Access to MinIO/S3 with SSL
  useIAM: false
  iamEndpoint: ""

  bucketName: "milvus-bucket" # Milvus Bucket name in MinIO/S3, make it the same as your milvus instance
  rootPath: "file" # Milvus storage root path in MinIO/S3, make it the same as your milvus instance

  # only for azure
  backupAccessKeyID: minioadmin  # accessKeyID of MinIO/S3
  backupSecretAccessKey: minioadmin # MinIO/S3 encryption string
  backupBucketName: "backup" # Bucket name to store backup data. Backup data will store to backupBucketName/backupRootPath
  backupRootPath: "file" # Rootpath to store backup data. Backup data will store to backupBucketName/backupRootPath

主要更改地址及端口
创建备份文件

./milvus-backup create -n backup_${datetime} --config backup-prod.yaml

会在prod的minio集群中生成一个备份数据

备份数据传输

生产备份好的数据是在生产milvus集群中的minio中,所以需要工具进行对象存储的传输,此处使用rclone
此处rclone配置文件

[prod-minio]
type = s3
provider = Minio
env_auth = false
access_key_id = minioadmin
secret_access_key = minioadmin
endpoint = 
[backup-minio]
type = s3
provider = Minio
env_auth = false
access_key_id = minioadmin
secret_access_key = minioadmin
endpoint = 

此处主要修改endpoint,为minio的地址
备份数据传输

rclone copy -P prod-minio:backup/file/backup_${datetime} backup-minio:backup/file/backup_${datetime}

清理备份集群中现有数据

#!/usr/bin/env python3.8
from pymilvus import (
connections,
utility,
)
# backup-server proxy地址
hosts = "XXXXXX"
# 连接milvus服务器
connections.connect("default", host=hosts, port="19530")
# 获取collection列表
conn_lst = utility.list_collections()
for i in conn_lst:
    utility.drop_collection(i)

备份数据恢复到备份集群并加载至内存

恢复数据使用backup工具实现

./milvus-backup restore --restore_index -n backup_${datetime} --config restore-prod.yaml

加载collections使用py脚本实现

#!/usr/bin/env python3.8
from pymilvus import (
connections,
utility,
Collection,
)
hosts="XXXXXX"
# 连接milvus服务器
connections.connect("default", host=hosts, port="19530")
# 获取collection列表
conn_lst = utility.list_collections()
# 遍历collection列表
for i in conn_lst:
    collection = Collection(i)
    collection.load()

校验数据并告警

此处同样用py脚本去实现校验
最后便是实现完全的自动化,在服务器上创建定时任务并编写自动化shell脚本,使其在每晚两点开始执行备份

#!/bin/bash
# 创建完整备份文件
echo -e "\033[32m----------start backup prod milvus data to minio----------\033[0m"
datetime=$(date "+%Y%m%d")
cd /opt/milvus-backups
./milvus-backup create -n backup_${datetime} --config backup-prod.yaml
echo -e "\033[32m----------backup prod milvus data to minio finish----------\033[0m"

# 拷贝备份文件到备份机器
echo -e "\033[32m----------copy backup files to backup minio server----------\033[0m"
rclone copy -P prod-minio:backup/file/backup_${datetime} backup-minio:backup/file/backup_${datetime}
echo -e "\033[32m----------copy backup files finish----------\033[0m"

# 清理备份集群现有数据
echo -e "\033[32m----------clean backup-server data----------\033[0m"
python3 /opt/milvus-backups/delete.py
echo -e "\033[32m----------clean  data finish------------\033[0m"

# 从备份数据恢复至备份集群
echo -e "\033[32m----------start restore backup files----------\033[0m"
./milvus-backup restore --restore_index -n backup_${datetime} --config restore-prod.yaml
echo -e "\033[32m----------restore backup files finish----------\033[0m"

# 加载collections
echo -e "\033[32m----------load collection------------\033[0m"
python3 /opt/milvus-backups/load.py
echo -e "\033[32m----------load finish------------\033[0m"

# 对比数据并上传qw
python3 /opt/milvus-backups/alert.py

实现效果

在这里插入图片描述

标签:minio,备份,Milvus,向量,----------,033,backup,milvus
From: https://blog.csdn.net/professorman/article/details/140798298

相关文章

  • 使用pg_basebackup备份和恢复一个pg数据库
    创建用于备份用的用户:创建数据库备份用户:psql-Upostgres-c"CREATEUSERdbbackupWITHREPLICATIONPASSWORD'123456'"-U指定备份用户-c指定创建用户命令备份用户只需要授权:replication即可创建用于备份的目录:创建备份目录:mkdir-p/pgdata/backup/如果不是本......
  • 创建xtrbackup备份用户 ERROR 1819 (HY000): Your password does not satisfy the cur
    查看密码策略mysql>SHOWVARIABLESLIKE'validate_password%';+--------------------------------------+--------+|Variable_name|Value|+--------------------------------------+--------+|validate_password_check_user_name......
  • 句子向量表示(Sentence2Vec)
    句子向量表示(Sentence2Vec)是一种将句子转换为向量表示的技术。它的主要目的是将文本中的句子转换为数值向量,以便在机器学习和自然语言处理任务中进行处理和分析。通过将句子表示为向量,可以使用向量之间的距离或相似度来衡量句子之间的语义相似性。例如,在文本分类任务中,可......
  • 【Mysql】Docker下Mysql8数据备份与恢复
    目录【Mysql】Docker下Mysql8数据备份与恢复1创建Mysql容器2连接Mysql3Binlog检查3.1检查是否开启3.2mysql5.73.3mysql84备份数据库4.1容器里执行备份4.2宿主机执行备份4.3参数说明5定时备份!/bin/bash按shift+:输入wq【Mysql】Docker下Mysql8数据备份与恢复1......
  • 如何理解词向量、Transformer模型以及三个权重矩阵
    词向量与transformer 生成词向量的过程和训练Transformer的过程是两个不同的过程,但它们都是自然语言处理中的重要组成部分。#词向量的生成词向量(如Word2Vec、GloVe、FastText等)通常是通过预训练的词嵌入模型得到的。这些模型在大规模文本数据上训练,捕捉词与词之间的语义关系,......
  • 权限管理和数据库备份
    权限管理和数据库备份用户管理用户表:mysql.user本质:对这张表进行增删改查--创建用户CREATEUSER用户名IDENTIFIEDBY'密码'CREATEUSERkuangshenIDENTIFIEDBY'123456'--修改密码--当前用户SETPASSWORD=PASSWORD('123456')--指定用户SETPASSWORDFOR......
  • numpy中的向量
    梯度在各自空间的每一个点上对应的物理量概有强度,也有方向,将这些既有大小又有方向的场抽像出来便可以得到向量场。松手瞬间小球运动方向在X1X2平面上的投影就是梯度下降方向也叫下山方向,它反方向叫梯度向量,也叫上山方向·行向量转置可得到列向量,转置运算符为b=aT可以用len(a)......
  • Oracle数据库自动备份
    1.bat脚本格式为ANSI格式setCURDATE=%date:~0,4%%date:~5,2%%date:~8,2%setCURMON=%date:~0,4%%date:~5,2%setCURTIME=%time:~0,2%if"%CURTIME%"=="0"setCURTIME=00if"%CURTIME%"=="1"setCURTIME=01if"%CURTIME%&q......
  • 使用Velero备份K8S资源,看这篇干货就够了
    一、Velero简介 Velero提供备份和恢复Kubernetes集群资源和持久卷的工具。Velero功能:对群集进行备份,并在丢失时进行还原。将集群资源迁移到其他集群。Velero包括:在群集上运行的服务器在本地运行的命令行客户端开源地址:https://github.com/vmware-tanzu/velero官方......
  • 华南理工大学线性代数笔记整理5——特征值与特征向量
    本人华工21级电信本科生,目前大四,前段时间收拾书本时发现了自己保存完整的线代笔记和一些整理,应该会对大一新生的期末考试起作用,故作分享。注:大一时本人都是用手写A4纸的方式做笔记做复习,所以这里上传的都是一些纸质笔记的扫描件,尽量可以保证清晰。以分章节的方式,本章为第5章......