UID834
现金0
在线时间0 小时
注册时间2018-11-16
黑狼菜鸟
- 积分
- 0
|
一、MongoDB的摆设MongoDB官网:http://www.mongodb.com/
1.1 安装前预备
在安装之前起首确认该版本软件是否支持你的操纵体系。
Platform | 3.6 Community & Enterprise | 3.4 Community & Enterprise | 3.2 Community & Enterprise | 3.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运维工程师、网络安全工程师、云盘算工程师、运维开辟、高级架构师、数据库管理员全运维类技能岗位一扫而空。
● 免费充电桩 | 0底子学习Go语言"光速"入门教程
● 号外:老男孩又出新书啦(预售赠80元书签一套)!
● Linux运维Nginx软件优化,你会吗?
● 做运维比做开辟岗位强的6点利益,你知道么?
● 做运维必要相识哪些Redis数据库知识?(上)
● 做运维必要相识哪些Redis数据库知识?(下)
● CCTV央视访谈:老男孩教诲首创人冉宏元,带你玩转IT职场(内附视频)
老男孩IT教诲【Linux云盘算运维】课程,开设有整日制脱产班、周末班和网络在线班,以资助更多有必要的盆友们提拔技能,如果想要相识详细课程内容的话,那就点击本文左下方“阅读原文”来咨询吧~
看完本文有劳绩?那就分享给更多朋侪吧~
长按下方二维码,关注我哟
万水千山总是情,点个悦目行不可?
|
上一篇:RedHatRHEL7.2体系安装具体步调下一篇:Kafka实战条记
|