labring / FastGPT

FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop and deploy complex question-answering systems without the need for extensive setup or configuration.
https://tryfastgpt.ai
Other
17.47k stars 4.69k forks source link

【分享】如何使用mongodump/restore迁移fastgpt数据库 #1359

Closed samqin123 closed 5 months ago

samqin123 commented 5 months ago

例行检查

你的版本

问题描述, 日志截图 很多人包括我自己都有迁移需求,但是没有官方文档,我通过摸索,失败了很多次,终于弄好。分享给和我一样的小白,大神可以飘过,请鼓励点赞。 file-备份docker数据库-dump

复现步骤 前提说明:

1. 进入 docker mongo 【A环境】

docker exec -it mongo sh
mongo -u 'username' -p 'password'
>> show dbs
看到fastgpt数据库,以及其它几个,确定下导出数据库名称
准备:

检查数据库,容器和宿主机都创建一下 backup 目录 【A环境 + C环境】

【A环境】
容器:(先进入docker)
mkdir -p /data/backup

如果没同步到本地,手动建一下,配合docker cp 把文件拷到本地用
【C环境】宿主机 
到fastgpt目录,进入mongo目录,有data目录,下面建backup
mkdir -p /fastgpt/data/backup

2.mongodump 导出 【A环境】

2.1 导出 使用mongodump在源头容器中导出数据文件

导出的文件是在容器的/data/backup中,因为fastgpt配置文件已经建立了data的持久化,所以你去本地fast/mongo/data应该就能看到这个导出的目录:backup,里面有文件,

docker exec -it mongo bash -c "mongodump --db fastgpt -u 'username' -p 'password' --authenticationDatabase admin --out /data/backup"
mongodump --host 127.0.0.1:27017 --db fastgpt -u "username" -p "password" --authenticationDatabase admin --out /data/backup

补充:手工导出到宿主机【A环境】

当然你也可以使用:

docker cp mongo:/data/backup  <C环境fastgpt目录:/fastgpt/data/backup>

稳妥起见,压缩这个导出文件目录,并下载到本地或者服务器【A环境 -> C环境】

先进入源头系统的 fastgpt/mongo/data 目录

cd /usr/fastgpt/mongo/data   【A环境】

#执行,压缩文件
`tar -czvf ../fastgpt-mongo-backup-$(date +%Y-%m-%d).tar.gz ./  【A环境】

#下载到本地 【A环境-》C环境】

scp  -i /Users/qinxiaoqiang/Downloads/aliyunsamqin.pem root@101.133.158.80:/usr/fastgpt/mongo/data/backup/backup/fastgptbackup-2024-05-03.tar.gz /Users/qinxiaoqiang/Downloads/fastgpt2。

2.2 检查 【C环境】

导出后在宿主机目录解压缩,放在一个置顶目录比如. < user/fastgpt/mongobackup/data>

tar -xvzf fastgptbackup-2024-05-03.tar.gz -C user/fastgpt/mongobackup/data
解压缩后里面是bson文件

image

3 上传准备:【C环境】进入宿主机fastgpt安装目录

3.3.1 上传到新系统所在的 docker 容器里备用 【C环境】
docker cp user/fastgpt/mongobackup/data mongo:/tmp/backup

3.3.2 清空docker compose 运行后建立的 mongo/data 持久化目录 【C环境】

这样会把 docker 容器的 mongo/db 目录也清空了,否则 mongorestore 导入会报错

cd /fastgpt安装目录/mongo/data
rm -rf *

4.恢复: mongorestore 恢复 [C环境】

简单一点退回到本地,用 docker 命令一键导入,当然你也可以在容器里操作

docker exec -it mongo mongorestore -u "username" -p "password" --authenticationDatabase admin /tmp/backup/ --db fastgpt

5.重启容器 【C环境】

docker compose restart
docker logs -f mongo 

6. 登陆:

基本就能看到原来的数据库内容导入系统了

image备份docker数据库-dump.md.zip file-备份docker数据库-dump

c121914yu commented 5 months ago

👍 有兴趣可以提个 pr 到文档

samqin123 commented 5 months ago

我不是collaborator,需要邀请吗

c121914yu commented 5 months ago

我不是collaborator,需要邀请吗

任何人都可以提。 fork 仓库,修改内容后提 pr 即可,不需要邀请。

https://doc.fastai.site/docs/development/intro/#%E6%8F%90%E4%BA%A4%E4%BB%A3%E7%A0%81%E8%87%B3%E5%BC%80%E6%BA%90%E4%BB%93%E5%BA%93

samqin123 commented 5 months ago

PR已经提交了,这是git上第一次提交,宝贵的第一次给fastgpt了