news 2026/9/12 14:39:14

如何用 mongodump 与 mongorestore 备份和恢复 TradingAgents-CN 的 MongoDB 数据?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 mongodump 与 mongorestore 备份和恢复 TradingAgents-CN 的 MongoDB 数据?

如何用 mongodump 与 mongorestore 备份和恢复 TradingAgents-CN 的 MongoDB 数据?

【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN

TradingAgents-CN 使用 MongoDB 作为主数据库,存储行情、新闻、分析结果、系统配置等核心数据。当数据库数据量较大(文档建议以 100MB 为界)时,官方指南建议改用 MongoDB 原生命令行工具mongodumpmongorestore完成备份与还原,而不是走 Web 界面:命令行直接操作 BSON 格式并支持 gzip 压缩,文档给出的 500MB 数据库性能对比中,mongodump(BSON + gzip)备份约 30 秒、文件约 50MB,而 Web 界面(JSON)约需 10 分钟、文件 500MB(该表格为文档示例数据,不是固定预期)。本文基于 数据库备份与还原指南 给出完整的操作路径:安装工具、执行备份、验证备份、还原数据,以及定期自动备份和迁移场景。

安装 MongoDB Database Tools

mongodumpmongorestore属于 MongoDB Database Tools,需要单独安装。安装方式按平台选择:

Windows:从 MongoDB 官方 Database Tools 下载页下载,解压到任意目录(文档示例路径C:\Program Files\MongoDB\Tools\100\bin),然后把该目录加入系统 PATH 环境变量。

Linux(Ubuntu/Debian)

sudo apt-get install mongodb-database-tools

macOS

brew install mongodb-database-tools

安装后验证:

mongodump --version mongorestore --version

两条命令都能打印版本号,说明工具已就绪。

确认连接信息与数据库名

备份命令需要知道两件事:MongoDB 的连接串,以及要备份的数据库名。

  • TradingAgents-CN 的 Docker 部署中,MongoDB 使用mongo:4.4镜像,并将宿主机 27017 端口映射到容器,认证凭据在 docker-compose.yml 中定义为admin/tradingagents123
  • 数据库名以你实际使用的 compose 文件为准:docker-compose.yml 中MONGO_INITDB_DATABASEtradingagents,而 docker-compose.hub.nginx.yml 中为tradingagentscn。备份命令里的--db参数和连接串中的库名要与实际部署一致,不要照抄示例中的值而不核对。

指南中的无认证示例连接串是mongodb://localhost:27017;Docker 部署默认启用了 root 用户认证,应使用带认证的连接串形式(见下节)。

执行备份

基本全量备份

备份整个数据库:

mongodump \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --out=./backup \ --gzip

参数说明(来自文档):

  • --uri:MongoDB 连接字符串
  • --db:数据库名称
  • --out:备份输出目录
  • --gzip:启用 gzip 压缩(推荐)

带认证的备份

你的 MongoDB 启用了认证时(Docker 默认部署即是),把用户名、密码写进连接串:

mongodump \ --uri="mongodb://username:password@localhost:27017/tradingagents?authSource=admin" \ --out=./backup \ --gzip

其中usernamepassword需替换为你部署的实际凭据,Docker 部署即 docker-compose.yml 中的admin/tradingagents123,库名按 compose 文件替换为tradingagentstradingagentscn

只备份指定集合

只备份某个集合,例如配置集合:

mongodump \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --collection=system_configs \ --out=./backup \ --gzip

一次备份多个集合用--nsInclude(可重复出现),例如只备份配置相关集合:

mongodump \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --out=./backup_config \ --gzip \ --nsInclude="tradingagents.system_configs" \ --nsInclude="tradingagents.llm_providers" \ --nsInclude="tradingagents.market_categories" \ --nsInclude="tradingagents.datasource_groupings"

反过来,排除大数据量集合(如行情集合)用--nsExclude

mongodump \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --out=./backup \ --gzip \ --nsExclude="tradingagents.market_quotes" \ --nsExclude="tradingagents.stock_basic_info"

备份远程服务器上的数据库,只需把连接串指向远端地址,例如mongodb://username:password@remote-server:27017/tradingagents,其余参数不变。

备份过程不会锁库:mongodump使用快照读取,不阻塞写操作(文档 FAQ 明确说明)。

验证备份结果

文档给出三种验证方式:

方法 1:查看备份文件大小

du -sh backup/tradingagents/

方法 2:用bsondump抽查集合内容

# 查看备份包含的集合 ls -lh backup/tradingagents/ # 抽查某个集合的文档 bsondump backup/tradingagents/system_configs.bson.gz | head -n 10

方法 3:还原到测试数据库做完整校验

mongorestore \ --uri="mongodb://localhost:27017" \ --db=tradingagents_test \ --gzip \ ./backup/tradingagents

注意这里--db指向一个独立的tradingagents_test库,不影响生产数据。还原到测试库能跑通,即可确认备份文件可用。

还原数据

基本还原与 --drop 的区别

还原整个数据库:

mongorestore \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --gzip \ ./backup/tradingagents

文档对此操作有明确警告:还原会覆盖现有数据。如果希望还原前先清空目标集合,使用--drop

mongorestore \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --drop \ --gzip \ ./backup/tradingagents

--drop的含义是还原前先删除现有集合,两者效果都是破坏性的,执行前请先确认目标库可以覆盖,或再备份一次当前数据。

还原到不同数据库或单个集合

验证备份、或在测试环境复现数据时,把备份还原到其他库:

mongorestore \ --uri="mongodb://localhost:27017" \ --db=tradingagents_test \ --gzip \ ./backup/tradingagents

只还原一个集合,直接指定对应的.bson.gz文件:

mongorestore \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --collection=system_configs \ --gzip \ ./backup/tradingagents/system_configs.bson.gz

不覆盖方式合并还原(索引已存在时不重复建索引):

mongorestore \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --gzip \ --noIndexRestore \ ./backup/tradingagents

--noIndexRestore表示不还原索引(适用于索引已存在的情况)。

灾难恢复流程

文档给出的恢复步骤是:先停应用、用--drop还原最近一次备份、再重启应用:

# 1. 停止应用 docker-compose stop web # 2. 删除现有数据并还原 mongorestore \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --drop \ --gzip \ ./backup/tradingagents # 3. 重启应用 docker-compose start web

需要说明:仓库当前的 docker-compose.yml 与 docker-compose.hub.nginx.yml 中后端服务的名字是backend(前端为frontend),没有名为web的服务,文档示例中的web需按你实际部署的 compose 文件替换为对应服务名。

可选:设置每日自动备份

如果希望备份定期执行,文档提供了一个 Linux 备份脚本示例,保存为backup.sh

#!/bin/bash # 配置 BACKUP_DIR="/data/backups/tradingagents" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_PATH="$BACKUP_DIR/backup_$DATE" # 创建备份目录 mkdir -p "$BACKUP_PATH" # 执行备份 mongodump \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --out="$BACKUP_PATH" \ --gzip # 删除 7 天前的备份 find "$BACKUP_DIR" -type d -name "backup_*" -mtime +7 -exec rm -rf {} \; echo "✅ 备份完成: $BACKUP_PATH"

副作用说明:脚本中find ... -exec rm -rf一行会永久删除BACKUP_DIR下修改时间超过 7 天的备份目录,请确认 7 天的保留期符合你的要求后再启用;同时脚本内的连接串和库名要按实际部署替换。然后加入 crontab 每天凌晨 2 点执行(/path/to/backup.sh替换为脚本实际路径):

0 2 * * * /path/to/backup.sh >> /var/log/tradingagents_backup.log 2>&1

可选:迁移到新服务器

文档给出的迁移路径是:旧服务器mongodump→ 打包 → 传输 → 解压 → 新服务器mongorestore

# 1. 旧服务器备份 mongodump \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --out=./backup \ --gzip # 2. 打包 tar -czf tradingagents_backup.tar.gz backup/ # 3. 传输(user@new-server 替换为目标服务器) scp tradingagents_backup.tar.gz user@new-server:/tmp/ # 4. 新服务器解压 cd /tmp tar -xzf tradingagents_backup.tar.gz # 5. 新服务器还原 mongorestore \ --uri="mongodb://localhost:27017" \ --db=tradingagents \ --gzip \ ./backup/tradingagents

常见问题与限制

  • 备份文件可以跨 MongoDB 版本使用吗?可以,但文档建议:3.x → 4.x 兼容,4.x → 5.x 兼容,跨大版本(如 3.x → 5.x)建议先测试。
  • 备份会锁库吗?不会,mongodump快照读取不阻塞写操作。
  • 版本对应关系:TradingAgents-CN 的 Docker 部署使用mongo:4.4镜像,落在文档"4.x → 5.x 兼容"范围内。
  • 安全提示:文档明确提醒备份文件包含敏感数据(配置、Token 等),需要妥善保管。
  • 如果只是想清理数据卷前留一手备份,数据卷分析文档 中另有一个在容器内执行docker exec tradingagents-mongodb mongodump --out /tmp/backup再用docker cp拷出的做法,适合没有宿主机 mongodump 的场景。

参考

  • 数据库备份与还原指南:本文所有命令与参数的来源文档
  • docker-compose.yml、docker-compose.hub.nginx.yml:确认连接凭据与实际数据库名

【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 14:38:24

CMSIS-4源码静态评测:嵌入式底层契约的编译期验证

1. 这不是一次简单的“代码搬运”,而是一场对嵌入式底层标准的考古式复盘CMSIS-4 这个名字,对做过 Cortex-M 开发的老兵来说,就像看到 Keil MDK 的启动画面一样熟悉。它不是某个炫酷的新框架,也不是 GitHub 上星标过万的热门项目&…

作者头像 李华
网站建设 2026/9/12 14:38:17

5分钟完成PakePlus云打包的GitHub Token配置与验证

5分钟完成PakePlus云打包的GitHub Token配置与验证 【免费下载链接】PakePlus Turn any webpage/HTML/Vue/React and so on into desktop and mobile app under 5M with easy in few minutes. 轻松将任意网站/HTML/Vue/React等项目构建为轻量级(小于5M)多端桌面应用和手机应用仅…

作者头像 李华
网站建设 2026/9/12 14:38:16

STM32C552 ADC电压采集实战:从CubeMX配置到DMA多通道滤波

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 14:32:22

AI Agent多租户数据库选型:从VM级隔离到Serverless弹性实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华