gpt4 book ai didi

mongodb - 想不通为什么迁移后 mongo 数据库变大了?

转载 作者:可可西里 更新时间:2023-11-01 10:00:37 25 4
gpt4 key购买 nike

我是 mongodb 的新手。我有一个本地服务器和一个远程服务器。使用mongodump/mongorestore工具将mongo数据库从本地服务器迁移到远程服务器后,发现远程服务器上的数据库变大了。

这是我的示例:

在本地服务器上(Ubuntu 14.04.2 LTS,mongo 3.0.5):

> show dbs
Daily_data 7.9501953125GB
Monthly_data 0.453125GB
Weekly_data 1.953125GB

在远程服务器上(CentOS 6.7、mongo 2.4.3):

> show dbs
Daily_data 9.94921875GB
Monthly_data 0.953125GB
Weekly_data 3.9521484375GB

我还检查了一个集合的状态以进行比较,计数相同但大小(如 indexSizetotalIndexSize 等)发生了变化:

这是本地服务器上的收集状态:

> db.original_prices.stats()
{
"ns" : "Daily_data.original_prices",
"count" : 9430984,
"size" : 2263436160,
"avgObjSize" : 240,
"numExtents" : 21,
"storageSize" : 2897301504,
"lastExtentSize" : 756662272,
"paddingFactor" : 1,
"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
"userFlags" : 1,
"capped" : false,
"nindexes" : 2,
"indexDetails" : {

},
"totalIndexSize" : 627777808,
"indexSizes" : {
"_id_" : 275498496,
"symbol_1_dateTime_1" : 352279312
},
"ok" : 1
}

这是远程服务器上的收集状态:

> db.original_prices.stats()
{
"ns" : "Daily_data.original_prices",
"count" : 9430984,
"size" : 1810748976,
"avgObjSize" : 192.00000508960676,
"storageSize" : 2370023424,
"numExtents" : 19,
"nindexes" : 2,
"lastExtentSize" : 622702592,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 639804704,
"indexSizes" : {
"_id_" : 305994976,
"symbol_1_dateTime_1" : 333809728
},
"ok" : 1
}

如果mongodump/mongorestore是迁移mongo数据库的好保存方式?

最佳答案

您似乎已经注意到这里的问题是索引,因为它清楚地表明它是这里增长的 indexSize,并且有一个完全合乎逻辑的解释。

当运行恢复时,索引被重建,但在某种程度上避免阻塞恢复操作中发生的其他写操作。这与 Build Indexes in the Background 中采用的过程相似如文档中所述,不完全相同但接近。

为了获得最佳索引大小,最好先从目标数据库中删除索引并使用 --noIndexRestore mongorestore 命令的选项,因为这将阻止在数据加载期间建立索引。

完成后您可以运行常规 createIndex排除“后台”选项的任何使用,以便在前台创建索引。结果将是在创建索引期间数据库将被阻止读取和写入,但生成的索引将具有更小的大小。

至于一般做法,您会注意到其他数据大小实际上会在“重建”过程中“变小”,然后在恢复数据时不会创建源中存在的任何松弛空间。

mongodump 中的数据是二进制格式的,应该优先使用 mongoexport 和相关的 mongoimport 的文本格式,当然,当从一个 MongoDB 实例获取数据并在另一个实例上使用时,因为这不是这些工具的目的。

其他备用 ae 文件系统副本,例如 LVM 快照,当然会恢复到与创建备份副本完全相同的状态。

关于mongodb - 想不通为什么迁移后 mongo 数据库变大了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32665131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com