mongo-a2b
v0.0.1-beta.2
Published
MongoDB 数据迁移工具
Maintainers
Readme
mongo-a2b
MongoDB 数据迁移工具 - 将数据从源数据库同步到目标数据库。
特性
- 支持全量数据库迁移
- 支持命令行和配置文件两种使用方式
- 批量处理大数据集
- 自动复制索引
- 干运行模式
- 进度显示
安装
npm install -g mongo-a2b
# 或者
pnpm add -g mongo-a2b
# 或者
npx mongo-a2b使用方法
命令行
# 基本用法
mongo-a2b --source mongodb://localhost:27017/sourcedb --target mongodb://localhost:27017/targetdb
# 使用配置文件
mongo-a2b --config mongo-a2b.config.json
# 迁移指定集合
mongo-a2b -s mongodb://localhost:27017/sourcedb -t mongodb://localhost:27017/targetdb --collections users,orders
# 干运行(仅显示计划,不执行)
mongo-a2b --config mongo-a2b.config.json --dry-run
# 迁移前清空目标集合
mongo-a2b --config mongo-a2b.config.json --drop-target参数说明
| 参数 | 简写 | 说明 | 默认值 |
|------|------|------|--------|
| --source <uri> | -s | 源数据库连接 URI | - |
| --target <uri> | -t | 目标数据库连接 URI | - |
| --config <path> | -c | 配置文件路径 | - |
| --collections <list> | - | 要迁移的集合(逗号分隔) | 全部 |
| --exclude <list> | - | 要排除的集合(逗号分隔) | - |
| --batch-size <number> | - | 批量插入大小 | 1000 |
| --drop-target | - | 迁移前清空目标集合 | false |
| --dry-run | - | 仅显示迁移计划,不执行 | false |
| --verbose | -v | 详细输出模式 | false |
配置文件
创建 mongo-a2b.config.json 或 mongo-a2b.config.yaml 文件:
JSON 格式:
{
"source": "mongodb://localhost:27017/sourcedb",
"target": "mongodb://localhost:27017/targetdb",
"collections": ["users", "orders"],
"exclude": ["temp", "logs"],
"options": {
"batchSize": 1000,
"dropTarget": false,
"dryRun": false,
"verbose": true
}
}YAML 格式:
source: mongodb://localhost:27017/sourcedb
target: mongodb://localhost:27017/targetdb
collections:
- users
- orders
exclude:
- temp
- logs
options:
batchSize: 1000
dropTarget: false
dryRun: false
verbose: true高级配置(包含连接选项):
{
"source": {
"uri": "mongodb://user:pass@localhost:27017",
"database": "sourcedb",
"options": {
"authSource": "admin"
}
},
"target": {
"uri": "mongodb://user:pass@localhost:27017",
"database": "targetdb"
}
}工作原理
- 连接到源数据库和目标数据库
- 获取源数据库的所有集合列表
- 根据
collections和exclude参数过滤集合 - 对每个集合:
- 复制源集合的索引到目标集合
- 使用游标分批读取文档
- 使用
insertMany批量插入到目标集合
- 显示迁移摘要
系统要求
- Node.js >= 18
- MongoDB 4.0+
