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

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

shell中set -u、set -x、set -e的使用

《shell中set-u、set-x、set-e的使用》本文主要介绍了shell中set-u、set-x、set-e的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录✅ 1. set -u:防止使用未定义变量 作用: 示例:❌ 报错示例输出:✅ 推荐使用场景:✅ 2. se

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

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到