如何用 mongodump 与 mongorestore 备份和恢复 TradingAgents-CN 的 MongoDB 数据?
如何用 mongodump 与 mongorestore 备份和恢复 TradingAgents-CN 的 MongoDB 数据【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CNTradingAgents-CN 使用 MongoDB 作为主数据库存储行情、新闻、分析结果、系统配置等核心数据。当数据库数据量较大文档建议以 100MB 为界时官方指南建议改用 MongoDB 原生命令行工具mongodump和mongorestore完成备份与还原而不是走 Web 界面命令行直接操作 BSON 格式并支持 gzip 压缩文档给出的 500MB 数据库性能对比中mongodumpBSON gzip备份约 30 秒、文件约 50MB而 Web 界面JSON约需 10 分钟、文件 500MB该表格为文档示例数据不是固定预期。本文基于 数据库备份与还原指南 给出完整的操作路径安装工具、执行备份、验证备份、还原数据以及定期自动备份和迁移场景。安装 MongoDB Database Toolsmongodump、mongorestore属于 MongoDB Database Tools需要单独安装。安装方式按平台选择Windows从 MongoDB 官方 Database Tools 下载页下载解压到任意目录文档示例路径C:\Program Files\MongoDB\Tools\100\bin然后把该目录加入系统 PATH 环境变量。LinuxUbuntu/Debiansudo apt-get install mongodb-database-toolsmacOSbrew 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_DATABASE为tradingagents而 docker-compose.hub.nginx.yml 中为tradingagentscn。备份命令里的--db参数和连接串中的库名要与实际部署一致不要照抄示例中的值而不核对。指南中的无认证示例连接串是mongodb://localhost:27017Docker 部署默认启用了 root 用户认证应使用带认证的连接串形式见下节。执行备份基本全量备份备份整个数据库mongodump \ --urimongodb://localhost:27017 \ --dbtradingagents \ --out./backup \ --gzip参数说明来自文档--uriMongoDB 连接字符串--db数据库名称--out备份输出目录--gzip启用 gzip 压缩推荐带认证的备份你的 MongoDB 启用了认证时Docker 默认部署即是把用户名、密码写进连接串mongodump \ --urimongodb://username:passwordlocalhost:27017/tradingagents?authSourceadmin \ --out./backup \ --gzip其中username、password需替换为你部署的实际凭据Docker 部署即 docker-compose.yml 中的admin/tradingagents123库名按 compose 文件替换为tradingagents或tradingagentscn。只备份指定集合只备份某个集合例如配置集合mongodump \ --urimongodb://localhost:27017 \ --dbtradingagents \ --collectionsystem_configs \ --out./backup \ --gzip一次备份多个集合用--nsInclude可重复出现例如只备份配置相关集合mongodump \ --urimongodb://localhost:27017 \ --dbtradingagents \ --out./backup_config \ --gzip \ --nsIncludetradingagents.system_configs \ --nsIncludetradingagents.llm_providers \ --nsIncludetradingagents.market_categories \ --nsIncludetradingagents.datasource_groupings反过来排除大数据量集合如行情集合用--nsExcludemongodump \ --urimongodb://localhost:27017 \ --dbtradingagents \ --out./backup \ --gzip \ --nsExcludetradingagents.market_quotes \ --nsExcludetradingagents.stock_basic_info备份远程服务器上的数据库只需把连接串指向远端地址例如mongodb://username:passwordremote-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 \ --urimongodb://localhost:27017 \ --dbtradingagents_test \ --gzip \ ./backup/tradingagents注意这里--db指向一个独立的tradingagents_test库不影响生产数据。还原到测试库能跑通即可确认备份文件可用。还原数据基本还原与 --drop 的区别还原整个数据库mongorestore \ --urimongodb://localhost:27017 \ --dbtradingagents \ --gzip \ ./backup/tradingagents文档对此操作有明确警告还原会覆盖现有数据。如果希望还原前先清空目标集合使用--dropmongorestore \ --urimongodb://localhost:27017 \ --dbtradingagents \ --drop \ --gzip \ ./backup/tradingagents--drop的含义是还原前先删除现有集合两者效果都是破坏性的执行前请先确认目标库可以覆盖或再备份一次当前数据。还原到不同数据库或单个集合验证备份、或在测试环境复现数据时把备份还原到其他库mongorestore \ --urimongodb://localhost:27017 \ --dbtradingagents_test \ --gzip \ ./backup/tradingagents只还原一个集合直接指定对应的.bson.gz文件mongorestore \ --urimongodb://localhost:27017 \ --dbtradingagents \ --collectionsystem_configs \ --gzip \ ./backup/tradingagents/system_configs.bson.gz不覆盖方式合并还原索引已存在时不重复建索引mongorestore \ --urimongodb://localhost:27017 \ --dbtradingagents \ --gzip \ --noIndexRestore \ ./backup/tradingagents--noIndexRestore表示不还原索引适用于索引已存在的情况。灾难恢复流程文档给出的恢复步骤是先停应用、用--drop还原最近一次备份、再重启应用# 1. 停止应用 docker-compose stop web # 2. 删除现有数据并还原 mongorestore \ --urimongodb://localhost:27017 \ --dbtradingagents \ --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 \ --urimongodb://localhost:27017 \ --dbtradingagents \ --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 21可选迁移到新服务器文档给出的迁移路径是旧服务器mongodump→ 打包 → 传输 → 解压 → 新服务器mongorestore# 1. 旧服务器备份 mongodump \ --urimongodb://localhost:27017 \ --dbtradingagents \ --out./backup \ --gzip # 2. 打包 tar -czf tradingagents_backup.tar.gz backup/ # 3. 传输usernew-server 替换为目标服务器 scp tradingagents_backup.tar.gz usernew-server:/tmp/ # 4. 新服务器解压 cd /tmp tar -xzf tradingagents_backup.tar.gz # 5. 新服务器还原 mongorestore \ --urimongodb://localhost:27017 \ --dbtradingagents \ --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),仅供参考