MongoDB 批量写入操作收到异常 "waiting for replication timed out"

Exception "waiting for replication timed out" received for MongoDB Bulk Write operation

我们有两台服务器供 MongoDB 服务器使用,一台为主,另一台配置为副本。

我们使用 PHP 将更新列表批量写入 MongoDB。从服务器日志中,我们在服务器日志中做了一些 "waiting for replication timed out" 的少量异常。

  1. 异常的原因可能是什么?两台服务器之间的网络稳定。
  2. 当我们收到异常"waiting for replication timed out"时,我们可以假设批量写入操作已成功将目标文件更新到主服务器?

PHP代码的批量写入部分:

 try {
            $manager = new MongoDB\Driver\Manager("mongodb://" . DB_HOST);
            $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 10000);
            $result = $manager->executeBulkWrite($DBName . '.' . $collection, $bulk, $writeConcern);
            return $result;
        } catch (Exception $ee) {
            AppendToLogFile(ERROR_Internal_Error, 'Script:' . __FILE__ . ', LINE:' . __LINE__ . ',$ee:' . $ee->getMessage());
            continue;
        }

谢谢!

根据您的代码,您提到的写入问题为 Majority,而您的副本集是 2 个成员,因此多数将为 2。另外,您提到的 wtimeout 值为10000 毫秒(10 秒)。所以期望所有的写入都应该在 10 秒内从主要复制到次要,否则,系统将 return 一条错误消息说 waiting for replication timed out.

回答你的第二个问题,是的,文档将在主数据库中成功更新,该消息仅针对文档在给定的 wtimeout 毫秒时间内未在辅助数据库中复制。