lovecodeblog 2020-01-10
目录
我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。
个人博客:
笔者微信:zhanghe15069028807
,非诚勿扰。
使用程序操作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
连接代码,单实例的连接代码
//写一个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'}
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压力嘛
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}