0

有人可以澄清“moveChunk.from”和“moveChunk.to”的所有步骤吗?我想知道在这些步骤中执行了哪些操作(我猜这些步骤的值代表了该步骤所花费的时间 ms)。这将帮助我推导出块迁移期间发生的任何最慢的步骤。

{
    "_id" : "bdvlpabhishekk-2013-07-20T17:46:28-51eaccf40c5c5c12e0e451d5",
    "server" : "bdvlpabhishekk",
    "clientAddr" : "127.0.0.1:50933",
    "time" : ISODate("2013-07-20T17:46:28.589Z"),
    "what" : "moveChunk.from",
    "ns" : "test.test",
    "details" : {
        "min" : {
            "key1" : 151110
        },
        "max" : {
            "key1" : 171315
        },
        "step1 of 6" : 0,
        "step2 of 6" : 1,
        "step3 of 6" : 60,
        "step4 of 6" : 2067,
        "step5 of 6" : 7,
        "step6 of 6" : 0
    }
}


{
    "_id" : "bdvlpabhishekk-2013-07-20T17:46:31-51eaccf7d6a98a5663942b06",
    "server" : "bdvlpabhishekk",
    "clientAddr" : ":27017",
    "time" : ISODate("2013-07-20T17:46:31.671Z"),
    "what" : "moveChunk.to",
    "ns" : "test.test",
    "details" : {
        "min" : {
            "key1" : 171315
        },
        "max" : {
            "key1" : 192199
        },
        "step1 of 5" : 0,
        "step2 of 5" : 0,
        "step3 of 5" : 1712,
        "step4 of 5" : 0,
        "step5 of 5" : 344
    }
}
4

2 回答 2

1

所有这些步骤都在“M202:MONGODB 高级部署和操作”课程中进行了解释,该课程可在线免费获得(由于stackoverflow 对许多发布的URL 的限制,我无法在此处发布此链接,请尝试查找谷歌课程)

本课程的相关视频包括:迁移概述剖析和迁移深度剖析

解释如下。

所有时间值都以毫秒为单位。假设 F 是“moveChunk.from”,T 是“moveChunk.to”。步骤为 F1..F6 和 T1..T5。步骤依次执行 F1、F2、F3、F4:{T1、T2、T3、T4、T5}、F5、F6。步骤 F4 包括 {T1..T5},F4 的时间是 T1..T5 的总和(但没有完全匹配)。

  1. F1 - mongos 向 F 发送“moveChunk”命令(要从中迁移的主分片)
  2. F2 - 命令的健全性检查
  3. F3 - F 向 T 发送命令(从我这里读取这个块)
  4. F4,T1..T3 - 传输开始,T 执行完整性检查,索引检查等
  5. F4,T4 - 赶上后续操作(如果在传输过程中有插入到块中,则将更新从 F 发送到 T)
  6. F4,T5 - 稳定状态(更改写入主日志)
  7. F5 - 即将提交关于新块位置(关键部分)的配置服务器更改
  8. F6 - 清理
于 2015-06-19T01:48:57.360 回答
0

所有块迁移都使用以下过程:

  1. 平衡器进程将 moveChunk 命令发送到源分片。
  2. 源使用内部 moveChunk 命令开始移动。在迁移过程中,对块的操作路由到源分片。源分片负责块的传入写入操作。
  3. 目标分片开始请求块中的文档并开始接收数据的副本。
  4. 在接收到块中的最终文档后,目标分片启动同步过程,以确保它具有迁移过程中发生的迁移文档的更改。
  5. 完全同步后,目标分片连接到配置数据库并使用块的新位置更新集群元数据。
  6. 在目标分片完成元数据更新后,一旦块上没有打开的游标,源分片就会删除其文档副本。

取自于此

于 2013-08-20T11:04:50.270 回答