Mongodb&Python(3)

lovecodeblog 2020-01-10

目录

我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。
个人博客:
笔者微信:zhanghe15069028807,非诚勿扰。

Mongodb&Python

使用程序操作mongodb

mongodb可以使用java、python、php等语言去操作

运维使用Python居多,下面介绍使用python操作Mongodb数据库

使用python操作mongodb,需要使用pip安装pymongo模块

yum install epel-release -y
yum install python2-pip -y
pip install pymongo

1、连接单实例

连接代码,单实例的连接代码

//写一个python文件,然后运行就可连接mongodb
import pymongo 
client = pymongo.MongoClient( '127.0.0.1', 27022 )
zhang=client.zhang     #指定库名
zhanghe = zhang.zhanghe  #指定表名
for item in myuser.find(): #这里还有一个表名
 print(item)
 
//运行一下,正常
[ ~]# python test.py
{u'age': u'22', u'_id': ObjectId('5e17e8822bf3e4ff8a1936ca'), u'name': u'zhanghe'}

2、连接副本集

pymongo副本集的连接代码,代码支持自动切换,连接多台,挂一台没有关系

import pymongo
client = pymongo.MongoClient( ['192.168.80.23:27017', '192.168.80.24:27018', '192.168.80.24:27019'] )
zhang = client.zhang  #这里有两个库名,zhang是库名
myuser = zhang.myuser #myuser是表名
myvar = {'age':20, 'name': 'zhanghehehe'}   #插入点数据
myuser.insert(myvar)
for item in myuser.find():  #这里还有一个
 print(item)
 
//连接测试一下
[ ~]# python test2.py
{u'_id': ObjectId('5e172703c7716c1ae0013a2e'), u'userid': 1.0}
{u'_id': ObjectId('5e17e1c5027440d4015fc025'), u'userid': 2.0}
{u'age': 20, u'_id': ObjectId('5e17f2c65da2ee7578977d0c'), u'name': u'zhanghehehe'}

并不是所有的从都去同步主,通过rs.status()可以看到,有的从是从主开始同步,而有的从是从别的从上同步,减少主的IO压力嘛

3、PY获取Mongodb的状态信息

mongodb监控:可以使用Python去监控mongodb状态

获取mongodb的serverStatus状态信息,一般状态信息需要每个实例都进行监控

import pymongo 
client = pymongo.MongoClient('127.0.0.1',27022)
db = client.admin
serverStatus = db.command('serverStatus')
print(serverStatus)

//一运行会输入一大推信息,都堆到一块了,根本没法看,可以使用下下面的方式把键和值单独打印

每个状态信息单独打印,输出好看了一些

import pymongo
client = pymongo.MongoClient('127.0.0.1',27017)
db = client.admin
serverStatus = db.command('serverStatus')
for key,value in serverStatus.items():
 print(key, value)
 print()

MongoDB建议的监控方向

  • connections 连接信息

  • network 流量信息

  • opcounters 增删改查信息

状态信息获取

import pymongo 
client = pymongo.MongoClient('127.0.0.1',27017)
db = client.admin
serverStatus = db.command('serverStatus')
print(serverStatus['connections'])
print(serverStatus['network'])
print(serverStatus['opcounters'])

//查看效果
[ ~]# python test6.py
{u'current': 2, u'available': 52426, u'totalCreated': 14}
{u'serviceExecutorTaskStats': {u'threadsRunning': 2, u'executor': u'passthrough'}, u'compression': {u'snappy': {u'compressor': {u'bytesOut': 0L, u'bytesIn': 0L}, u'decompressor': {u'bytesOut': 0L, u'bytesIn': 0L}}}, u'physicalBytesIn': 7263L, u'bytesOut': 104380L, u'numRequests': 49L, u'physicalBytesOut': 104380L, u'bytesIn': 7263L}
{u'getmore': 0, u'insert': 1, u'update': 4, u'command': 58, u'query': 3, u'delete': 2}

相关推荐