前提说明:
- 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 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文件
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. 登陆:
基本就能看到原来的数据库内容导入系统了
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于