mongo操作手册
mongo官网 :
包目录:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.10.tgz
安装目录:/export/servers/icmdb/mongodb
操作一:新建目录与解压
# 新建目录
/export/servers/icmdb/ # sudo mkdir -p /export/servers/icmdb/
# sudo chown -R admin:admin /export/servers/icmdb
# 推包(在中控执行)
scp jly/mongodb-linux-x86_64-rhel70-4.0.10.tgz admin@11.94.13.180:/export/servers/icmdb/
# 将下载好的安装包解压到改目录下,并重命名为mongodb
tar -zxvf mongodb-linux-x86_64-rhel70-4.0.10.tgz
mv mongodb-linux-x86_64-rhel70-4.0.10 mongodb
# 在mongodb下新建db、conf、log目录
mkdir -p /export/servers/icmdb/mongodb/db/rs27017
mkdir -p /export/servers/icmdb/mongodb/conf
sudo mkdir /export/logs/mongo/db_rs/
sudo chown -R admin:admin /export/logs/mongo/db_rs/
touch /export/logs/mongo/db_rs/rs_27017.log
# 新增认证需要的keyfile文件
/export/servers/icmdb/mongodb/keyfile
chmod 700 /export/servers/icmdb/mongodb/keyfile
操作二:修改配置
vi /export/servers/icmdb/mongodb/conf/rs_27017.conf
# 绑定端口
port=27017
#绑定ip 默认127.0.0.1只允许本地连接
bind_ip=0.0.0.0
#数据目录
dbpath = /export/servers/icmdb/mongodb/db/rs27017
logpath = /export/logs/mongo/db_rs/rs_27017.log
#设置后台运行
fork = true
#日志输出方式
logappend = true
#开启身份验证
auth = true
keyFile=/export/servers/icmdb/mongodb/keyfile
replSet = rs
操作三:启动mongo-server
# 安装numactl命令
yum whatprovides numactl
yum install numactl
# 启动服务
numactl --interleave=all bin/mongod -f conf/rs_27019.conf
numactl --interleave=all bin/mongod -f conf/rs_27018.conf
numactl --interleave=all bin/mongod -f conf/rs_27017.conf
操作四:链接mongo
# 登录mongo :
/export/servers/icmdb/mongodb/bin/mongo
# 关闭mongodb
db.shutdownServer()
# 指定端口登录:
bin/mongo --port 27017
# 远程连接
/bin/mongo --host jmongo-hb1-prod-mongo-lrl7r5llda1.jmiss.jdcloud.com -u root -p fiZJhs721r7TJ1Y --port 27017
# 认证
use admin
db.auth("admin", "1qaz2wsx")
# 查看主从状态
rs.status()
# netstat -anltp 查看请求情况
# 设置主从
# 主:
rs.add({host:'11.7.210.75:27017',priority:1,votes:1})
rs.remove("172.18.169.128:27018");
# 从:
rs.slaveOk();
# 修改conf
primary>config=rs.conf()
primary>config.members[1].priority=2
primary>rs.reconfig(config)
常用mongo命令
设置mongo可查:db.getMongo().setSlaveOk()
命令:show dbs;use icmdb;show tables
查询 :
https://www.runoob.com/mongodb/mongodb-query.html
find:
db.table_name.find().pretty()
db.service_info.find({"conf_id":50076});
count:db.service_info.count();
删除:db.service_info.remove({"conf_id":85921})
mongo_查重 : db.service_info.aggregate([{$group:{_id:'$conf_id',value:{$sum:1}}},{$match:{value:{$gt:2}}}])
创建索引:db.getCollection("service_info").createIndex( { "conf_id": 1 }, { sparse: true,unique: true } )
写入
db.service_info.insert({conf_id:50077,services_latest_update:new Date()})
更新
db.service_info.update({conf_id:50076},{$set:{services_latest_update:new Date()}})
搭建集群
rs.initiate({ _id: "rs", // 副本集名称,与配置文件一致 members: [ { _id: 0, host: "节点1IP:27017" } // 替换为当前节点的 IP:端口 ] })
在primary节点添加从节点
// 添加第二个节点
rs.add("节点2IP:27017")
// 添加第三个节点(若有)
rs.add("节点3IP:27017")
为mongodb添加认证
# 添加keyfile配置
openssl rand -base64 741 >>keyfile
chmod 700 keyfile
keyFile=/export/servers/icmdb/mongodb/keyfile
# 使用验证重启服务
bin/mongod -f conf/rs_27017.conf --auth
# mongo设置密码
>use admin
>db.createUser({user:"admin",pwd:"1qaz2wsx",roles:["root"]})
> db.system.users.find() # 显示当前系统用户
'''
> use cmdb_test
switched to db cmdb_test
> db.createUser({user: "cmdb", pwd: "cmdb", roles: [{ role: "dbOwner", db: "cmdb" }]}) # 创建用户cmdb,设置密码cmdb,设置角色dbOwner
'''
# 查看用户
db.system.users.find();
数据备份与恢复
# mongo数据库备份
/export/servers/icmdb/mongodb/bin/mongodump
# 默认备份在 ll ./dump
将备份数据库文件推到开发机:scp -r icmdb/ admin@10.172.209.16:/export/jingliyang/
# mongo数据库恢复
/export/servers/icmdb/mongodb/bin/mongorestore -d icmdb2_inte -c metainfo --drop /home/admin/mongodump/meta_info.bson
/export/servers/icmdb/mongodb/bin/mongorestore -d icmdb2_inte -c service_info --drop /home/admin/mongodump/service_info.bson
pymongo
# find conf_ids = [int(conf_id) for conf_id in conf_ids.split(',')] print(conf_ids,host, cpu) ret = mongo.db.service_info.find({'conf_id': {"$in":conf_ids},'business':u'rec'}) for service in ret: print(service) #groupby key = {"business":1} condition = {"conf_id":{"$in":conf_ids}} initial = {"count": 0} ret = mongo.db.service_info.group(key, condition, initial,mongo_reduce_func) print(ret)

浙公网安备 33010602011771号