- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经设置了一个包含 4 个服务器的副本集。
出于测试目的,我使用 GridFS 编写了一个脚本来填充我的数据库,最多约 1.5 亿行照片。我的照片大约 15KB。 (对于小文件使用 gridfs 应该不是问题吧?!)
几个小时后,大约有 5000 万行,但是我在日志中有这条消息:
replSet error RS102 too stale to catch up, at least from 192.168.0.1:27017
这里是 replSet 状态:
rs.status();
{
"set" : "rsdb",
"date" : ISODate("2012-07-18T09:00:48Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "192.168.0.1:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1342601552000,
"i" : 245
},
"optimeDate" : ISODate("2012-07-18T08:52:32Z"),
"self" : true
},
{
"_id" : 1,
"name" : "192.168.0.2:27018",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 64770,
"optime" : {
"t" : 1342539026000,
"i" : 5188
},
"optimeDate" : ISODate("2012-07-17T15:30:26Z"),
"lastHeartbeat" : ISODate("2012-07-18T09:00:47Z"),
"pingMs" : 0,
"errmsg" : "error RS102 too stale to catch up"
},
{
"_id" : 2,
"name" : "192.168.0.3:27019",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 64735,
"optime" : {
"t" : 1342539026000,
"i" : 5188
},
"optimeDate" : ISODate("2012-07-17T15:30:26Z"),
"lastHeartbeat" : ISODate("2012-07-18T09:00:47Z"),
"pingMs" : 0,
"errmsg" : "error RS102 too stale to catch up"
},
{
"_id" : 3,
"name" : "192.168.0.4:27020",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 65075,
"optime" : {
"t" : 1342539085000,
"i" : 3838
},
"optimeDate" : ISODate("2012-07-17T15:31:25Z"),
"lastHeartbeat" : ISODate("2012-07-18T09:00:46Z"),
"pingMs" : 0,
"errmsg" : "error RS102 too stale to catch up"
}
],
"ok" : 1
该装置仍在接受数据,但由于我的 3 个服务器“关闭”,我应该如何进行修复(比删除数据和重新同步要好,这需要很长时间,但会起作用)?
尤其是:这是因为剧本太暴力了吗?这意味着它几乎不会在生产中发生?
最佳答案
您无需修复,只需执行完全重新同步即可。
在辅助上,您可以:
按照说明进行操作 here .
在您的情况下发生的事情是您的辅助节点已经过时,即它们的 oplog 和主节点上的 oplog 没有共同点。看这个document ,详细说明了各种状态。对主要成员的写入必须复制到辅助成员,并且您的辅助成员无法跟上,直到它们最终变得陈旧。您需要考虑调整 oplog 的大小.
关于 oplog 大小,这取决于您随时间插入/更新了多少数据。我会选择一个允许您使用数小时甚至数天的操作日志的大小。
此外,我不确定您运行的是哪个操作系统。但是,对于 64 位 Linux、Solaris 和 FreeBSD 系统,MongoDB 会将可用磁盘空间的 5% 分配给 oplog。如果此数量小于 1 GB,则 MongoDB 将分配 1 GB 的空间。对于 64 位 OS X 系统,MongoDB 为 oplog 分配了 183 MB 的空间,对于 32 位系统,MongoDB 为 oplog 分配了大约 48 MB 的空间。
记录有多大?您想要多少?这取决于此数据插入是典型的还是异常的,您只是在测试。
例如,对于 1KB 的文档,以每秒 2000 个文档的速度计算,这将为您每分钟净赚 120MB,而您的 5GB oplog 将持续约 40 分钟。这意味着,如果辅助节点离线 40 分钟或落后超过 40 分钟,那么您就过时了,必须进行完全重新同步。
我建议阅读 Replica Set Internals 文档 here .你的副本集中有 4 个成员,这是不推荐的。 voting election (of primary) process 应该是奇数,因此您需要添加一个仲裁器、另一个辅助设备或删除您的一个辅助设备。
最后,这里有一份关于RS administration的详细文档.
关于mongodb - ReplicaSet 上的 RS102 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11537977/
来自 JSR-339: For simplicity, JAX-RS implementations are NOT REQUIRED to support processing groups oth
JAX-RS 提供了 StreamingOutput 接口(interface),我们可以实现它来对我们的响应主体进行原始流处理。 public interface StreamingOutput {
有没有办法获得java.lang.reflect.Method为给定的 @Path 调用的方法(用 HttpServletRequest 注释) ? 这是我的用例:我在 Java EE 中 Filte
我接到了一家公司的任务,该任务向我发送了一台已完成所有设置的虚拟机。任务是我必须创建一个 API 来从数据库中检索人员详细信息并显示它。 问题是,当我运行应用程序时,服务器返回一个包含 hello w
我有一个 POST 方法调用,它接受很少的表单参数。我希望 JAX-RS 能够处理不存在特定表单参数的情况。 示例: @POST @Produces (MediaType.APPLICATION_JS
我有 JAX-RS 网络应用程序,我想记录从获取请求到响应的时间量。在带有 servlet 过滤器的 Spring Boot 中很容易。但是我的应用程序中的过滤器无法正常工作: @Provider p
使用以下网址。 http://doma.in/context/resource/some/.../undefined 我想获取 ../resource 之后的路径名,即 /some/.../undef
Closed. This question is off-topic。它当前不接受答案。
我花了几个小时在嵌入式 Jetty 9.1.0.v20131115 和 RESTEasy 3.0.5.Final 中安装自定义登录服务。我的登录服务将在数据库中查找用户并为他们分配角色。它看起来像这样
RESOURCE_STALLS.RS的说明Intel Broadwell 的硬件性能事件如下: This event counts stall cycles caused by absence of
我想从 java 服务器 (Restful Jax-rs) 发送图像。我的客户是安卓。 @GET public Response getUserImage() { byte[] image =new
(特别是 RESTeasy) 具有如下方法签名会很好(对于单个文件): public void upload(@FormParam("name") ..., @FormParam("file") fi
RESTEasy (JAX-RS) 允许通过子资源进行动态调度。例如: POST /customers/create {"name":"Smith","country":"jp"} 我们可以有一个根资
假设有一个 ResultSet rs 和 n 对象。 这段代码: while(rs.next()) { // do something on rs } 在算法上等于此代码(即两者给出相同的结果)
我正在使用 Visual Studio 2005 和 mysql 4.0,我有一个表,其中包含一个字段(十进制 16,4),用于存储发票金额和另一个表,其中包含对该发票的付款(这些字段也是十进制的)
我正在使用 JAX-RS、Microprofile 和 Payara 5 构建 REST 服务。我的方法返回类型为 Response 的对象。响应本身包含一个 MyClass 列表。实现看起来像这样:
我已经使用 Mock MVC 成功地为 Spring MVC REST 服务构建了无需部署的集成测试框架。我正在努力对 JAX-RS 服务做同样的事情。 REST Assured 看起来很有希望,但它
我有一个使用JAX-RS 2.0的Jersey实现的Java应用程序,并且我想在客户端启用gzip压缩。服务器已启用它,并且通过在Chrome中的开发人员工具中的“大小/内容”中查找客户端正在使用的特
我正在尝试与 Tomcat7 一起使用 RESTful Web 服务 (JAX-RS)。我尝试了 3 种不同的实现(Jersey、RESTeasy 和 ReSTLet),但都没有成功。这应该很容易,但
swagger-api有什么区别和 JAX-RS ? 是swagger-api仅用于文档? (例如 @ApiOperation ) 最佳答案 根据 API 文档,JAX-RS是用于 RESTful W
我是一名优秀的程序员,十分优秀!