mongo replica set维护

2023-11-11 22:08
文章标签 set 维护 mongo replica

本文主要是介绍mongo replica set维护,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

mongo replica set维护

1.pymongo小坑

  • pymongo3.0以前,MongoReplicaSetClient是Python连接mongodb副本集的客户端类,跟MongoClient是分开的,MongoClient不能探测副本集的状态变化,比如主节点变化

  • pymongo3.0开始,MongoClient是唯一的client class,不管是单机mongodb,还是副本集,还是shard cluster,都是它一个人负责。

    不幸的是,项目里老代码用的旧版pymongo,又没注意MongoReplicaSetClient这个东西,直接用的MongoClient连接副本集。那么当副本集主节点变化时,MongoClient还在继续往原来的主节点写数据,就会报错

2.抢修

    最快的方案当然是手动维护mongodb副本集,迫使主节点重回原先主节点mongo命令行连接当前主节点,执行如下命令:cf = rs.conf() cf.members[x].priority = 大于其他节点的整数 # x是你希望接下来成为主节点机器的下标rs.reconfig(cf)若命令执行成功,会触发新的选举,会有一个重连的过程,类似下面信息
    2016-04-13T15:13:10.103+0800 DBClientCursor::init call() failed2016-04-13T15:13:10.105+0800 trying reconnect to 10.103.28.94:27037 (10.103.28.94) failed2016-04-13T15:13:10.105+0800 reconnect 10.103.28.94:27037 (10.103.28.94) okreconnected to server after rs command (which is normal)
    一般重选,高优先级的node会成为primary.若还是没能成为primary,连接到新的primary, 在新primary上 rs.stepDown().rs.stepDown()可以强制当前primary变为secondary.

3.修正

    上面的方案只是应急,不能每次主节点变化后,都来手动切换主节点到指定的节点。

        长治久安:使用pymongo3.0或以上版本,mongoengine0.10.6版本开始支持pymongo3.


附一段pymongo官方文档:

Changed in version 3.0:MongoClient is now the one and only client class for a standalone server, mongos, or replica set.It includes the functionality that had been split intoMongoReplicaSetClient: it can connect to a replica set, discover all its members, and monitor the set for stepdowns, elections, and reconfigs.

这篇关于mongo replica set维护的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/393118

相关文章

poj 3050 dfs + set的妙用

题意: 给一个5x5的矩阵,求由多少个由连续6个元素组成的不一样的字符的个数。 解析: dfs + set去重搞定。 代码: #include <iostream>#include <cstdio>#include <set>#include <cstdlib>#include <algorithm>#include <cstring>#include <cm

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

Android set Tag, findViewWithTag使用

设置了tag为“principal”的view ImageView principal = (ImageView) findViewById(R.id.imagen_home_0);principal.setTag("principal"); 在其它地方获取,获取已经设置了tag为“principal”的view LayoutInflater inflater = LayoutInflate

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗? 有必要。本文从三个方面论述。分别是可测试,可维护,可移植。 可测试 软件黑盒测试更普遍,但很难覆盖所有应用场景。于是有了接口测试、模块化测试以及单元测试。都是通过降低测试对象

为备份驱动器制定备份计划:维护数据的3大方法

时间:2014-02-26 14:49 来源:网管之家 字体:[大 中 小]   您可能已经对您的电脑进行了备份,但其实这样还是远远不够的,其并非如您所认为的那样安全。您企业备份驱动器上的文件可能与您的主系统上的文件一样,容易受到灾难的影响。根据最近流行的恶意软件CryptoLocker的感染途径显示,连接到PC的外置驱动器——辅助硬盘驱动器,例如,用于备份的外部USB硬盘驱动器,可以像

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相

Eclipse或MyEclipse中Java Working Set管理项目

随着学习JAVA的时间的越来越久,项目也越来越多,Eclipse或MyEclipse界面中显示一堆! 每次工作使用到的项目肯定不会太多...... 每次从这么大数量的工程当中找到自己要使用的, 必须大规模的滚动滚动条...... 图片一   Project Explorer中:    图片二:Package Explorer中: 这样就好找很多了,分类放!

STL set整理

#include<set>#include<cstdio>#include<iterator>#include<iostream>#include<algorithm>using namespace std;//set 集合的操作//multisetset<int>Set1;set<int>Set2;set<int>Set3;/*begin() 返回指向第一个元素的迭代器