程序媛

mongo操作手册

安装

mongo官网 :https://www.mongodb.com

包目录:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.10.tgz

包:wget "http://storage.jd.local/dist-test/icmdb/mongodb-linux-x86_64-rhel70-4.0.10.tgz?Expires=3754468844&AccessKey=jRHUpSR7Jp4tiROb&Signature=m44QvBjDa9g9f0XAI7qYb9ZKTHA%3D"

安装目录:/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)
find&groupby

 

posted @ 2022-11-15 18:36  Eva_J  阅读(65)  评论(0)    收藏  举报