利用python测试mongodb副本集数据同步延迟
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本文主要介绍python如何连接mongodb副本集及读写分离配置,mongodb副本集数据同步延迟测试。一、python连接mongodb副本集1.连接副本集在新版的驱动中直接使用MongoClie
千家信息网最后更新 2025年02月01日利用python测试mongodb副本集数据同步延迟
本文主要介绍python如何连接mongodb副本集及读写分离配置,mongodb副本集数据同步延迟测试。
一、python连接mongodb副本集
1.连接副本集
在新版的驱动中直接使用MongoClient连接
如下:
from pymongo import MongoClientconn = MongoClient(['192.168.3.11:27017', '192.168.3.12:27017', '192.168.3.13:27017'])
2.读写分离配置
from pymongo import ReadPreferencedb = conn.get_database('hnrtest', read_preference=ReadPreference.SECONDARY_PREFERRED)
副本集ReadPreference有5个选项:
PRIMARY:默认选项,从primary节点读取数据
PRIMARY_PREFERRED:优先从primary节点读取,如果没有primary节点,则从集群中可用的secondary节点读取
SECONDARY:从secondary节点读取数据
SECONDARY_PREFERRED:优先从secondary节点读取,如果没有可用的secondary节点,则从primary节点读取
NEAREST:从集群中可用的节点读取数据
二、测试mongodb延迟脚本
1.原理
往集群中插入一批数据,然后从secondary节点读取,直到读到数据总数与插入的总数相等。
2.脚本内容
#!/usr/bin/python# -*- coding: utf-8 -*-import pymongofrom pymongo import MongoClientfrom pymongo import ReadPreferenceimport timeimport argparse# 定义执行时长装饰器函数def warps(*args): def deco(func): def _deco(*args, **kwargs): # 记录开始时间 start = time.clock() # 回调原函数 func(*args, **kwargs) # 记录结束时间 end = time.clock() # 计算执行时长 delat = end - start # 转换成ms输出 print("delay:%sms" % (int(delat*1000))) return _deco return deco# 连接副本集conn = MongoClient(['192.168.3.11:27017', '192.168.3.12:27017', '192.168.3.13:27017'])# 读写分离db = conn.get_database('hnrtest', read_preference=ReadPreference.SECONDARY_PREFERRED)# 定义连接的集合collection = db.student# 创建插入数据函数def data_insert(num): try: for i in range(1, num): collection.insert({"name": "student"+str(i), "age": (i % 100), "city": "FuZhou"}) except Exception as e: print("insert data:", e)# 创建查询数据函数,引用装饰器函数@warps()def data_select(num): try: count = collection.find().count() while count != num - 1: count = collection.find().count() except Exception as e: print("select data:", e)# 创建删除数据函数def data_delete(): try: collection.remove({}) except Exception as e: print("delete data:", e)# 创建计算延迟时长函数def data_delay(num): data_insert(num) data_select(num)if __name__ == '__main__': # 定义脚本需要传入插入的数据量,默认值为1000,通过-n传入参数 parser = argparse.ArgumentParser(description='insert data to mongodb number') parser.add_argument('-n', action='store', dest='num', type=int, required=False, default=1000) given_args = parser.parse_args() num = given_args.num data_delete() data_delay(num)
数据
节点
函数
副本
延迟
时长
脚本
集群
测试
总数
时间
配置
同步
内容
原理
参数
utf-8
查询
输出
驱动
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发类笔试
计算机网络安全基础知识
学校网架安全服务器
医疗数据库发展
数据库链接池的原理简述
软件开发有油水吗
将文本框内容添加进数据库
小学校园网络安全手抄报
毕马威网络安全法解读
闵行区信息化软件开发批发价格
玉田媒体网络技术售后服务
软件开发就业薪资
软件开发的项目清单
星外服务器
h3c 防火墙服务器发布
饥荒进入别人的服务器卡怎么解决
无锡专业冷库软件开发
软件开发实习渠道
网络安全个人计划
吕梁软件开发服务价格
smc数据库
浙江前端软件开发大概多少钱
温州软件开发公司怎么样
民航通信网络技术
家庭需要的网络安全服务
华为手机软件开发
乌托邦网络安全科技馆
涉密资质软件开发乙级申请条件
amd服务器内存
洛阳中坚网络技术有限责任公司