mongodb数据分割成小文件批量导入失败

在A服务器使用mongodump将mongodb的industry库导出打包传到B服务器上,现在在B服务器上想要通过先将mongodb数据文件切割成多个小文件再进行导入,可是一直提示如下报错,是脚本哪个地方写的有问题吗,如何调整呢?

img

img

img

根据您提供的信息,从报错信息来看,问题可能出现在脚本的某个地方。要进一步确定问题所在,我需要查看脚本的内容。您可以提供脚本的代码吗?这样我就可以帮助您检查并找出可能存在问题的地方,并提供相应的调整建议。

请将脚本的代码提供给我,我将尽力帮助您解决问题。

修改了一下,你看是否可以:

#!/bin/bash

BACKUP_DIR=/home/hgysuser/BF    #备份目录
DATE=$(date '+%Y%m%d')          #获取当天的日期
MONGORESTORE=/usr/bin/mongorestore
OUTPUT_FILE=/data/BF/hy.log
BATCH_SIZE=500
SLEEP_TIME=5
RESTORE_DIR=/home/hgysuser/restores
DB_NAME=industry

cd $BACKUP_DIR
tar -xzf "Mongodb${DATE}.tar.gz"

for collection in $(ls $BACKUP_DIR/Mongodb_${DATE}/${DB_NAME}/*.bson); do
    collection_name=$(basename "${collection}" .bson)
    echo "开始导入 ${collection_name} 集合.."
    split -l $BATCH_SIZE "${collection}" "${RESTORE_DIR}/${collection_name}-"

    cd $RESTORE_DIR
    for file in $(ls ${collection_name}-*); do
        echo "开始导入 $file ..."
        $MONGORESTORE --port 27017 --archive=$file --nsInclude=${DB_NAME}.${collection_name} --drop >> $OUTPUT_FILE 2>&1
        sleep $SLEEP_TIME
    done
done

拿到单个集合的文件通过命令转为json格式然后再拆分为多个小文件进行导入这样降低并发占用试下:

bsondump --outFile=input.json path/to/your_bson_file.bson