三个库
Mysql: 备份Minio 与 ES 的映射 、 知识库的配置信息
Minio: 备份用户上传的元文件
ES: 备份切片信息、提取的关键字、提取的提问等
数据库的备份
数据库中的对应关系
file
文件管理的层级树
document
document 与 知识库相关
file2document
file和知识库相关
knowledgebase
知识库配置信息
创建知识库现有knowledgebase,再上传文件
备份步骤:
knowlwdgebase表中的 id 在document表中获取document的id,
使用document的id,在file2document中获取fileid
使用fileId获取这一个知识库的parent_id
持续使用parent_id 构建这个知识库的file层级数
还原的时候,就在数据库中插入上方的数据即可
Minio的备份
知识库的文件存储在minio中,可以使用mc命令进行备份
这个东西备份在本地的就是bucket里面的文件

步骤:
1.映射docker目录

2.使用mc起别名建立连接
mc alias set myminio http://localhost:9001 rag_flow infini_rag_flow
3.备份目标bucket
mc mirror myminio/0bc6e0c8fa6011f0af1e9a5ea770a6d5 /backup_minio/0bc6e0c8fa6011f0af1e9a5ea770a6d5
递归删除bucket中的文件
mc rm --recursive --force myminio/0bc6e0c8fa6011f0af1e9a5ea770a6d5/
删除bucket
mc rb --force myminio/0bc6e0c8fa6011f0af1e9a5ea770a6d5
4.恢复目标bucket
mc mirror /backup_minio/0bc6e0c8fa6011f0af1e9a5ea770a6d5 myminio/0bc6e0c8fa6011f0af1e9a5ea770a6d5
如果目标的bucket不存在,创建之后再进行恢复
创建bucket
mc mb myminio/0bc6e0c8fa6011f0af1e9a5ea770a6d5
切片的备份
知识库的分块及配置信息存储在es中,可以使用请求的方式进行备份
这个东西备份在本地备份的是es文件
步骤:
1.映射docker目录

这里将请求认证关闭了,后期任务中,这里要打开!并研究怎么做
2.注册一个本地的es仓库存储备份记录
PUT /_snapshot/my_local_backup
{
"type": "fs",
"settings": {
"location": "/usr/share/elasticsearch/snapshots",
"compress": true
}
}3.在主索引中创建子集索引
POST /_reindex
{
"source": {
"index": "ragflow_3a59ff0dfa5b11f0b85ad6461fecc38d",
"_source": [
"doc_id",
"kb_id",
"title_tks",
"title_sm_tks",
"content_ltks",
"content_sm_ltks",
"content_with_weight",
"docnm_kwd",
"create_time",
"create_timestamp_flt",
"page_num_int",
"position_int",
"top_int",
"q_1024_vec",
"question_kwd",
"question_tks"
],
"query": {
"term": {
"kb_id": "0bc6e0c8fa6011f0af1e9a5ea770a6d5"
}
}
},
"dest": {
"index": "subset_index"
}
}
4.将子索引备份到仓库
PUT /_snapshot/my_local_backup/snapshot_1
{
"indices": "subset_index",
"ignore_unavailable": true,
"include_global_state": false
}此时本地会有文件出现

其他命令:
删除主索引中对应的子索引
POST /ragflow_3a59ff0dfa5b11f0b85ad6461fecc38d/_delete_by_query
{
"query": {
"term": {
"kb_id": "0bc6e0c8fa6011f0af1e9a5ea770a6d5"
}
}
}删除索引
DELETE /索引名称
查看备份仓库中存在的索引
GET /_snapshot/my_local_backup/snapshot_1
5.从仓库中恢复子索引
POST /_snapshot/my_local_backup/snapshot_1/_restore
{
"indices": "subset_index", // 索引名称
"rename_pattern": "(.+)"
}6.将子索引合并到主索引
POST /_reindex
{
"source": {
"index": "subset_index"
},
"dest": {
"index": "ragflow_3a59ff0dfa5b11f0b85ad6461fecc38d",
"op_type": "create"
}
}7.删除备份仓库中的索引
DELETE /_snapshot/my_local_backup/snapshot_1
遇到的问题
1.备份的时候,关于es认证的请求要怎么发送?
2.备份的进度要怎么获取?
3.备份的进度怎么推送?