登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 658|回复: 0

MongoDB学习篇:MongoDB的摆设和根本操纵

[复制链接]

163

主题

163

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2019-2-28 19:22:04 | 显示全部楼层 |阅读模式 来自 江苏徐州
R6dcD86d6BzAYhYt.jpg

一、MongoDB的摆设MongoDB官网:http://www.mongodb.com/
1.1 安装前预备
在安装之前起首确认该版本软件是否支持你的操纵体系。
Platform3.6 Community & Enterprise3.4 Community & Enterprise3.2 Community & Enterprise3.0 Community & Enterprise
RHEL/CentOS 6.2 and later
RHEL/CentOS 7.0 and later
1.2 情况阐明

体系情况阐明:
[root@MongoDB ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@MongoDB ~]# uname -r
2.6.32-696.el6.x86_64
[root@MongoDB ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@MongoDB ~]# getenforce 
Disabled
[root@MongoDB ~]# hostname -I
10.0.0.152 172.16.1.152
软件版本阐明
本次利用的mongodb版本为:mongodb-linux-x86_64-3.2.8.tgz1.3 摆设MongoDB
在root用户下操纵
<span style="font-size: 15px;">cat >> /etc/rc.local  /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
该方法仅限与CentOS体系利用。
Transparent Huge Pages (THP),通过利用更大的内存页面,可以淘汰具有大量内存的呆板上的缓冲区(TLB)查找的开销。
但是,数据库工作负载通常对THP体现不佳,由于它们每每具有希罕而不是一连的内存访问模式。您应该在Linux呆板上禁用THP,以确保MongoDB的最佳性能。
创建用户
groupadd -g 800 mongod
useradd  -u 801 -g mongod  mongod
修改用户暗码
echo 123456 |passwd --stdin  mongod
创建步伐目次
mkdir -p /application/mongodb/   &&\
cd  /application/mongodb/   &&\
mkdir  -p  bin  conf  log  data
下载步伐
cd  /application/mongodb/
wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.8.tgz
解压步伐
tar xf  mongodb-linux-x86_64-3.2.8.tgz
cd mongodb-linux-x86_64-3.2.8/bin/ &&\
cp * /mongodb/bin
修改步伐属主
chown -R mongod:mongod /application/mongodb
切换到mongod用户,设置用户情况变量
<span style="font-size: 15px;">su - mongod
cat >> .bash_profile  mongo
[mongod@MongoDB conf]$ mongo
MongoDB shell version: 3.2.8
connecting to: test
> db.shutdownServer()
shutdown command only works with the admin database; try 'use admin'
> use admin
> db.shutdownServer()
server should be down...
注:
mongod历程收到SIGINT信号大概SIGTERM信号,会做一些处置惩罚
> 关闭全部打开的毗连
> 将内存数据逼迫革新到磁盘
> 当前的操纵实行完毕
> 安全制止
    切忌kill -9
  数据库直接关闭,数据丢失,数据文件丧失,修复数据库(本钱高,有风险)
利用kill下令关闭历程
$ kill -2 PID
  原理:-2表现向mongod历程发送SIGINT信号。

$ kill -4 PID
  原理:-4表现向mognod历程发送SIGTERM信号。
利用脚本管理mongodb服务
注:该脚本可以直接在root用户下运行
 1 [root@MongoDB ~]# cat  /etc/init.d/mongod  
 2 #!/bin/bash
 3 #
 4 # chkconfig: 2345 80 90
 5 # description:mongodb
 6 # by oldboy
 7 # blog_url http://blog.oldboyedu.com
 8 #################################
 9 
10 MONGODIR=/application/mongodb
11 MONGOD=$MONGODIR/bin/mongod
12 MONGOCONF=$MONGODIR/conf/mongod.conf
13 InfoFile=/tmp/start.mongo
14 
15 . /etc/init.d/functions 
16 
17 status(){
18   PID=`awk 'NR==2{print $NF}' $InfoFile`
19   Run_Num=`ps -p $PID|wc -l`
20   if [ $Run_Num -eq 2 ]; then
21     echo "MongoDB is running"
22   else 
23     echo "MongoDB is shutdown"
24     return 3
25   fi
26 }
27 
28 start() {
29   status &>/dev/null
30   if [ $? -ne 3 ];then 
31     action "启动MongoDB,服务运行中..."  /bin/false 
32     exit 2
33   fi
34   sudo su - mongod -c "$MONGOD -f $MONGOCONF" >$InfoFile 2>/dev/null 
35   if [ $? -eq 0 ];then 
36     action "启动MongoDB"  /bin/true
37   else
38     action "启动MongoDB"  /bin/false
39   fi
40 }
41 
42 
43 stop() {
44   sudo su - mongod -c "$MONGOD -f $MONGOCONF --shutdown"  &>/dev/null
45   if [ $? -eq 0 ];then
46     action "制止MongoDB"  /bin/true
47   else 
48     action "制止MongoDB"  /bin/false
49   fi 
50 }
51 
52 
53 case "$1" in
54   start)
55     start
56     ;;
57   stop)
58     stop
59     ;;
60   restart)
61     stop
62     sleep 2
63     start
64     ;;
65   status)
66     status
67     ;;
68   *)
69     echo $"Usage: $0 {start|stop|restart|status}"
70     exit 1
71 esac
二、MongoDB的根本操纵
Mongodb中关键字种类:
db(数据库实例级别)
         db自己
             db.connection 数据库下的聚集信息
                 db.collection.xxx(
rs(复制集级别)
sh(分片级别)
2.1 查询操纵
在客户端指定命据库举行毗连:(默认毗连本机test数据库)
[mongod@MongoDB ~]$ mongo 10.0.0.152/admin
MongoDB shell version: 3.2.8
connecting to: 10.0.0.152/admin
> db
admin
检察当前数据库版本
> db.version()
3.2.8
切换数据库
> use test;
switched to db test
表现当前数据库
> db
test
> db.getName()
test
查询全部数据库
> show dbs;
oldboy   0.000GB
local    0.000GB
test     0.000GB
> show databases;
oldboy   0.000GB
local    0.000GB
test     0.000GB
检察oldboy数据库当前状态
> use oldboy;
> db.stats()
{
    "db" : "oldboy",
    "collections" : 1,
    "objects" : 10000,
    "avgObjSize" : 80,
    "dataSize" : 800000,
    "storageSize" : 258048,
    "numExtents" : 0,
    "indexes" : 1,
    "indexSize" : 94208,
    "ok" : 1
}
检察当前数据库的毗连呆板地点
> db.getMongo()
connection to 127.0.0.1
2.2 数据管理

创建数据库
> use oldboy;
阐明:

创建数据库:
当use的时间,体系就会主动创建一个数据库。
假如use之后没有创建任何聚集。体系就会删除这个数据库。
删除数据库
> show dbs;
oldboy   0.000GB
local    0.000GB
test     0.000GB
> use oldboy 
switched to db oldboy
> db.dropDatabase()
"dropped" : "oldboy""ok" : 1 }
阐明:

删除数据库:假如没有选择任何数据库,会删除默认的test数据库。
创建聚集
方法一:
> use oldboy;
switched to db oldboy
> db.createCollection('a')
"ok" : 1 }
> db.createCollection('b')
"ok" : 1 }
检察当前数据下的全部聚集
> show collections;
a
b
> db.getCollectionNames()
[ "a""b" ]
方法二:

当插入一个文档的时间,一个聚集就会主动创建。
> use oldboy;
switched to db oldboy
> db.c.insert({name:'oldboy'});
WriteResult({ "nInserted" : 1 })
> db.c.insert({url:'http://blog.oldboyedu.com'});
WriteResult({ "nInserted" : 1 })
检察创建的合集
> db.getCollectionNames()
[ "a""b""c" ]
检察合集里的内容
> db.c.find()
"_id" : ObjectId("5a4cbcea83ec78b7bea904f8"), "name" : "oldboy" }
"_id" : ObjectId("5a4cbcfc83ec78b7bea904f9"), "url" : "http://blog.oldboyedu.com" }
重定名聚集
> db.c.renameCollection("oldboy")
"ok" : 1 }
> db.getCollectionNames()
[ "a""b""oldboy" ]
删除合集
> db.a.drop()
true
> db.getCollectionNames()
[ "b""oldboy" ]
插入1w行数据
<span style="font-size: 15px;">> for(i=0;i db.log.find()
注:默认每页表现20条记载,当表现不下的的环境下,可以用it迭代下令查询下一页数据。
> DBQuery.shellBatchSize=50;    # 每页表现50条记载
50 
app> db.log.findOne()            # 检察第1条记载
app> db.log.count()              # 查询总的记载数
app> db.log.find({uid:1000});    # 查询UUID为1000的数据
删除聚集中的记载数
>  db.log.distinct("name")      #  查询去掉当前聚集中某列的重复数据
["mongodb"]
> db.log.remove({})             #  删除聚集中全部记载
WriteResult({ "nRemoved" : 10000 })  
> db.log.distinct("name")
[ ]
检察聚集存储信息
> db.log.stats()          # 检察数据状态
> db.log.dataSize()       # 聚集中数据的原始巨细
> db.log.totalIndexSize() # 聚集中索引数据的原始巨细
> db.log.totalSize()      # 聚集中索引+数据压缩存储之后的巨细
> db.log.storageSize()    # 聚集中数据压缩存储的巨细]
pretty()利用
> db.log.find({uid:1000}).pretty()
{
    "_id" : ObjectId("5a4c5c0bdf067ab57602f7c2"),
    "uid" : 1000,
    "name" : "mongodb",
    "age" : 6,
    "date" : ISODate("2018-01-03T04:28:59.343Z")
}

本文内容来自于 老男孩Linux云盘算运维良好学员课后条记整理





老男孩教诲作为率先开展Linux和Python培训的领跑者,
Linux云盘算&&安全运维工程师2019重磅升级,连续领跑高端IT教诲:
课程更新7大亮点:
1、增长Python主动化CMDB平台实战项目(约4-10天);
2、增长大量网络安全课程(约10-20天);
3、增长阿里云企业级云服务实战情况项目实践(约2-4天);
4、增长个人发展、职场高薪、成为管理者职场头脑课(约10-20天);
5、增长Docker、K8S企业级实战实战项目(约5-10天);
6、增长ELK日记网络项目实战(约2天);
7、全程提供讲授课本、习题、测验,门生人手多本;
将Linux运维工程师、网络安全工程师、云盘算工程师、运维开辟、高级架构师、数据库管理员全运维类技能岗位一扫而空。



I0nAjjBR9H0nPhP0.jpg
● 免费充电桩 | 0底子学习Go语言"光速"入门教程
● 号外:老男孩又出新书啦(预售赠80元书签一套)!
● Linux运维Nginx软件优化,你会吗?
● 做运维比做开辟岗位强的6点利益,你知道么?
● 做运维必要相识哪些Redis数据库知识?(上)
● 做运维必要相识哪些Redis数据库知识?(下)
● CCTV央视访谈:老男孩教诲首创人冉宏元,带你玩转IT职场(内附视频)


老男孩IT教诲【Linux云盘算运维】课程,开设有整日制脱产班、周末班和网络在线班,以资助更多有必要的盆友们提拔技能,如果想要相识详细课程内容的话,那就点击本文左下方“阅读原文”来咨询吧~


看完本文有劳绩?那就分享给更多朋侪吧~

长按下方二维码,关注我哟

U98r8RrKtyvhZCh6.jpg

万水千山总是情,点个悦目行不可? ALc4IDMoZ6ZUOHc4.jpg




上一篇:RedHatRHEL7.2体系安装具体步调
下一篇:Kafka实战条记
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-3 07:48 , Processed in 0.070254 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表