小编Chr*_* W.的帖子

MongoDB 副本集 SECONDARY 卡在“ROLLBACK”状态

在我们 mongodb 的最近自动更新期间PRIMARY,当它PRIMARY下台时,它永久进入了一种ROLLBACK状态。

ROLLBACK状态几小时后,mongodb数据库目录下.bsonrollback目录中仍然没有回滚文件。那,还有我们日志文件中的这一行:[rsSync] replSet syncThread: 13410 replSet too much data to roll back,似乎表明该ROLLBACK过程失败。

我需要一些帮助来分析到底出了什么问题。

  • 我们的日志中似乎发生了两次不同的回滚。是这样还是花了3个小时?
  • 如果第一次回滚(19:00 时)成功,为什么ourollback目录中没有出现任何内容?
  • 对所有这些警告的原因有什么猜测吗?这可能与回滚失败有关吗?
  • 我们是否因为第一次丢失了 18 秒的数据ROLLBACK
  • “卡在ROLLBACK状态”问题有没有通用的解决方案?我们最终不得不对整个数据库进行冲洗并从主数据库重新同步。

相关的日志行是:

# Primary coming back after restart...
Tue May 15 19:01:01 [initandlisten] MongoDB starting : pid=3684 port=27017 dbpath=/var/lib/mongodb 64-bit host=magnesium
Tue May 15 19:01:01 [initandlisten] db version v2.0.5, pdfile version 4.5
# ... init stuff
Tue …
Run Code Online (Sandbox Code Playgroud)

mongodb rollback

11
推荐指数
2
解决办法
9556
查看次数

Mongo Collection `Size` 比 `storageSize` * 大*?

我最近使用以下命令压缩了我的收藏:

 db.<collectionName>.runCommand( "compact" )
Run Code Online (Sandbox Code Playgroud)

现在我的收藏大小似乎大于磁盘上的大小!

SECONDARY> db.<collectionName>.stats()
{
"ns" : "<databaseName>.<collectionName>",
"count" : 2937359,
"size" : 5681676492,                   # 5.6 GB
"avgObjSize" : 1934.2805874256433,
"storageSize" : 4292853728,            # 4.2 GB
"numExtents" : 2,
"nindexes" : 2,
"lastExtentSize" : 2146426864,
"paddingFactor" : 1.669999999836597,
"flags" : 1,
"totalIndexSize" : 220735648,
"indexSizes" : {
    "_id_" : 162326304,
    "e_1_" : 58409344
},
"ok" : 1
Run Code Online (Sandbox Code Playgroud)

}

我不明白这怎么可能。不是所有的 mongodb 集合都一直由磁盘支持吗?

谁能解释这些结果?

mongodb

9
推荐指数
1
解决办法
1万
查看次数

MongoDB 未使用所有可用 RAM

我在 mongo 集群中存储了大约 200 GB 的数据。运行 mongo 的实例之一上的物理内存为 8GB。在此实例上不会运行任何其他任何后果。根据 Mongo 的文档(例如:http : //www.mongodb.org/display/DOCS/Checking+Server+Memory+Usage),我可以理解的尽可能接近,这意味着 mongod 进程应该使用大约 100% 的可用的物理内存。但是,如果您查看top命令的以下输出,您将看到 mongod 实例仅使用 2GB 的常驻内存,并且有完整的 2GB 可用物理内存,但根本没有使用。

有人可以向我解释这种行为吗?为什么有 2GB 的空闲内存?

top 输出:

top - 23:19:43 up 89 days, 20:05,  2 users,  load average: 0.41, 0.55, 0.59
Tasks: 101 total,   1 running, 100 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.0%us,  1.3%sy,  0.0%ni, 93.9%id,  2.6%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   8163664k total,  6131764k used,  2031900k free,    54976k buffers
Swap: 16771848k total,    10604k used, …
Run Code Online (Sandbox Code Playgroud)

mongodb memory

9
推荐指数
1
解决办法
7445
查看次数

将监控复制状态的 MySQL 用户的权限?

我想使用脚本来监控 MySQL 数据库的复制状态,就像在这个 bash 脚本中一样:https : //gist.github.com/wesdeboer/1791632

我想创建一个仅用于查询复制状态的用户。所以基本上这个用户只需要运行以下命令:

"SHOW SLAVE STATUS \G"
Run Code Online (Sandbox Code Playgroud)

我需要授予用户的最低权限集是什么?

(这甚至是可以GRANT编辑的东西吗?

mysql replication permissions

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

mongodb ×3

memory ×1

mysql ×1

permissions ×1

replication ×1

rollback ×1