FastGPT icon indicating copy to clipboard operation
FastGPT copied to clipboard

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

Open samqin123 opened this issue 1 year ago • 4 comments

例行检查

  • [ x] 我已确认目前没有类似 issue
  • [ x] 我已完整查看过项目 README,以及项目文档
  • [ x] 我使用了自己的 key,并确认我的 key 是可正常使用的
  • [ x] 我理解并愿意跟进此 issue,协助测试和提供反馈
  • [x] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

你的版本

  • [ ] 公有云版本
  • [ x] 私有部署版本, 具体版本号: 4.6

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

复现步骤 前提说明:

  • [ ] A环境:我在阿里云上部署的fastgpt,需要挪到B环境。
  • [ ] B环境:是新环境,而且特殊一点的是,NAS(群晖或者QNAP)部署了fastgpt,mongo必须改成4.2或者4.4版本(其实云端更方便,支持fastgpt mongo默认版本)
  • [ ] C环境:妥善考虑,用本地电脑作为C环境过渡,保存相关文件并分离操作

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 [email protected]:/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

samqin123 avatar May 03 '24 04:05 samqin123

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

c121914yu avatar May 03 '24 13:05 c121914yu

我不是collaborator,需要邀请吗

samqin123 avatar May 04 '24 07:05 samqin123

我不是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

c121914yu avatar May 04 '24 09:05 c121914yu

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

samqin123 avatar May 05 '24 09:05 samqin123