在A服务器使用mongodump将mongodb的industry库导出打包传到B服务器上,现在在B服务器上想要通过先将mongodb数据文件切割成多个小文件再进行导入,可是一直提示如下报错,是脚本哪个地方写的有问题吗,如何调整呢?
根据您提供的信息,从报错信息来看,问题可能出现在脚本的某个地方。要进一步确定问题所在,我需要查看脚本的内容。您可以提供脚本的代码吗?这样我就可以帮助您检查并找出可能存在问题的地方,并提供相应的调整建议。
请将脚本的代码提供给我,我将尽力帮助您解决问题。
修改了一下,你看是否可以:
#!/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