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

leo*_*eon 1 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;
        }
Run Code Online (Sandbox Code Playgroud)

谢谢!

Man*_*ani 5

根据您的代码,您提到了写入关注,并且Majority您的副本集有 2 个成员,因此多数将为 2。此外,您提到的值为wtimeout10000 毫秒(10 秒)。因此,期望所有写入都应在 10 秒内从主数据库复制到辅助数据库,否则系统将返回一条错误消息waiting for replication timed out: 。

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