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)
//运行一下,正常
[root@M2 ~]# 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)
//连接测试一下
[root@M2 ~]# 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'])
//查看效果
[root@M2 ~]# 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}