各位大佬,我这边在 使用 mongoexport 进行分片集群数据迁移是遇到了问题,迁移命令如下
mongoexport -h 127.0.0.1:27021 -u xxx -p xxxx -d xxxx -c xxxx -o /app/zxr/fact_site_user_location.json –authenticationDatabase admin,原始数据库集合数据量13W左右,迁出来后数据量11W左右,
原始集合分片数据分布如下:
shard1:86.38%
shard2:13.6%
shard3:0.01%
怀疑是不是只把shard1的数据给迁出来了,导致数据量少,
正确的迁移命令和步骤应该是怎么样呢?
xiaoxu 已回答的问题
1、数据不准确问题
在mongodb中db.colname.count()是查询元数据信息,并没有统计具体数据。在分片架构下存在数据平衡的问题,存在2个问题:1、数据正在迁移导致不准 2、孤儿导致统计不准。
此时采用db.colname.countDocuments() 【如果版本支持】,如果不支持的话,db.colname.aggregate([{$group:{_id:null,count:{$sum:1}}}])
2、数据不均衡
这个跟分片键设置有关系。
sh.status()可以查看数据分布情况
db.colname.getShardDistribution()
xiaoxu 已回答的问题
db.colname.count()算的数据量,没有分片的集合都能导出来,分片的就出现数据量变少的情况
使用db.colname.count()统计数据量的,我现在发现的问题是不分片的集合数据能都导出来,分片的集合,我这边集群数据分布不均匀,某个shard 占比99%的能够都导出来,shard占比80%多的导出来的数据量就变少了