MongoDB批量写入操作收到异常“等待复制超时”

时间:2019-03-20 04:27:46

标签: mongodb mongodb-query php-mongodb

我们有两台用于MongoDB服务器的服务器,一台是主服务器,另一台被配置为副本服务器。

我们使用PHP批量编写MongoDB更新列表。从服务器日志中,我们在服务器日志中做了一些“等待复制超时”的例外情况。

  1. 发生异常的原因可能是什么?两台服务器之间的网络稳定。
  2. 当我们收到“等待复制超时”的异常时,我们可以假定批量写入操作已成功将目标文档更新到主服务器?

大量编写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;
        }

谢谢!

1 个答案:

答案 0 :(得分:1)

根据您的代码,您提到的写关注点为Majority,而您的写关注点是2个成员副本集,因此多数将为2。此外,您还提到了wtimeout值为10000ms( 10秒)。因此,期望所有的写操作都应在10秒内从主磁盘复制到辅助磁盘,否则,系统将返回一条错误消息,内容为waiting for replication timed out

回答第二个问题,是的,文档将在主数据库中成功更新,该消息仅表示在给定的wtimeout时间(以毫秒为单位)中未在辅助数据库中复制文档。