博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初学MonggoDb—Linux平台安装MongoDB
阅读量:4070 次
发布时间:2019-05-25

本文共 9081 字,大约阅读时间需要 30 分钟。

 参考资料:

也是第一次接触mongodb数据库,那么什么是mongodb数据库?

下面引用相关文档的介绍:

什么是MongoDB ?

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

主要特点:

  • MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
  • 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
  • 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
  • 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  • Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  • MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
  • Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
  • Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
  • Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
  • GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
  • MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  • MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
  • MongoDB安装简单

学习任何数据库都是从安装开始,下面就一起来看看mongodb数据库是如何安装的

1.MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包。

下载地址:

下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装) 。

#下载[root@18c opt]# curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz #解压[root@18c opt]# tar -zxvf mongodb-linux-x86_64-4.0.4.tgz#将解压包拷贝到指定目录[root@18c opt]# mv mongodb-linux-x86_64-4.0.4 /usr/local/mongodb

MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:

[root@18c ~]# cat .bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then        . ~/.bashrcfi# User specific environment and startup programsMONGONDB=/usr/local/mongodbPATH=$MONGONDB/bin:$PATH:$HOME/binexport PATH[root@18c ~]# source .bash_profile

MONGODB 为你 MongoDB 的安装路径。如本文的 /usr/local/mongodb

2.创建数据库目录和日志目录:

MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。

[root@18c ~]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/vda2        36G   18G   17G  52% /tmpfs           1.9G     0  1.9G   0% /dev/shm/dev/vdb1        30G   12G   17G  42% /data[root@18c ~]# cd /data/mongodb/[root@18c mongodb]# pwd/data/mongodb[root@18c mongodb]# mkdir data logs

 

注意:/data/db 是 MongoDB 默认的启动的数据库路径(--dbpath)。这里我们不使用默认的路径,自己创建个/data/mongodb/data目录

3.创建配置文件

[root@18c mongodb]# cat mongodb.conf#数据库文件位置dbpath=/data/mongodb/data#日志文件位置logpath=/data/mongodb/logs/mongodb.log#以追加方式写入日志logappend=true#默认27017port=27017#设置后台运行fork=true

3.命令行中运行MongoDb服务

你可以再命令行中执行mongo安装目录中的bin目录执行mongod命令来启动mongdb服务。

[root@18c bin]# ./mongod --config /data/mongodb/mongodb.confabout to fork child process, waiting until server is ready for connections.forked process: 22315child process started successfully, parent exiting

到此mongdb就已经安装完成了,是不是so easy!!

4.尝试登陆mongodb

卧槽,上面出现这么多的Waring,不过不影响使用,但是看起来有点别扭,下面将一一介绍这些告警信息啥意思

#首先查看mongdb服务是否真的起来[root@18c ~]# ps -ef |grep mongodroot     22315     1  0 10:49 ?        00:00:02 ./mongod --config /data/mongodb/mongodb.confroot     22453 22275  0 11:03 pts/1    00:00:00 grep mongod#登陆[root@18c ~]# mongoMongoDB shell version v4.0.4connecting to: mongodb://127.0.0.1:27017Implicit session: session { "id" : UUID("3a2fe154-6b5d-4f11-bb28-b69e40887105") }MongoDB server version: 4.0.4Server has startup warnings:2018-11-20T10:49:39.628+0800 I STORAGE  [initandlisten]2018-11-20T10:49:39.628+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine2018-11-20T10:49:39.628+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem2018-11-20T10:49:40.346+0800 I CONTROL  [initandlisten]2018-11-20T10:49:40.346+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.2018-11-20T10:49:40.346+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.2018-11-20T10:49:40.346+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.2018-11-20T10:49:40.346+0800 I CONTROL  [initandlisten]2018-11-20T10:49:40.346+0800 I CONTROL  [initandlisten] ** WARNING: This server is bound to localhost.2018-11-20T10:49:40.346+0800 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server.2018-11-20T10:49:40.346+0800 I CONTROL  [initandlisten] **          Start the server with --bind_ip 
to specify which IP2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten]2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten]2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten]2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'2018-11-20T10:49:40.346+0800 I CONTROL [initandlisten]>

 

第一个: WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine意思是:强烈建议使用带WiredTiger存储引擎的XFS文件系统XFS文件系统:XFS一种高性能的日志文件系统,最早于1993年,由Silicon Graphics为他们的IRIX操作系统而开发,是IRIX 5.3版的默认文件系统。2000年5月,Silicon Graphics以GNU通用公共许可证发布这套系统的源代码,之后被移植到Linux 内核上。XFS 特别擅长处理大文件,同时提供平滑的数据传输。既然是warning说明不会影响mongodb的正常使用,只是提醒你安装mongodb最好使用ext4或者xfs文件系统!本人系统已经是ext4系统了!
第二个: WARNING: Access control is not enabled for the database.意思是:未对数据库启用访问控制,对数据和配置的读写访问不受限制(危险的warning)解决办法:创建管理员并设置密码> show dbs;admin   0.000GBconfig  0.000GBlocal   0.000GB> use adminswitched to db admin> db.createUser(...   {...     user: "yuhuashi",...     pwd: "yuhuashi",...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]...   }...   )Successfully added user: {        "user" : "yuhuashi",        "roles" : [                {                        "role" : "userAdminAnyDatabase",                        "db" : "admin"                }        ]}然后重启数据库服务器[root@18c ~]# ps -ef |grep mongoroot     22556     1  2 11:20 ?        00:00:01 mongod --config /data/mongodb/mongodb.confroot     22591 22524  0 11:21 pts/0    00:00:00 grep mongo[root@18c ~]# kill -9 22556[root@18c ~]# ps -ef |grep mongoroot     22593 22524  0 11:21 pts/0    00:00:00 grep mongo[root@18c ~]# mongod --auth --config /data/mongodb/mongodb.confabout to fork child process, waiting until server is ready for connections.forked process: 22596child process started successfully, parent exiting[root@18c ~]# mongoMongoDB shell version v4.0.4connecting to: mongodb://127.0.0.1:27017Implicit session: session { "id" : UUID("b60eca6a-0a2d-4399-9b8f-8a3f442f39b2") }MongoDB server version: 4.0.4>

 

第三个:WARNING: You are running this process as the root user, which is not recommended.意思就是不推荐使用root用户来启用mongdb,不好意思哥哥是测试环境,你爱咋咋的

 

第四个: WARNING: This server is bound to localhost.解决办法,请看!!Remote systems will be unable to connect to this server.2018-11-20T11:23:39.317+0800 I CONTROL  [initandlisten] **          Start the server with --bind_ip 
to specify which IP2018-11-20T11:23:39.317+0800 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to2018-11-20T11:23:39.317+0800 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the2018-11-20T11:23:39.317+0800 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.2018-11-20T11:23:39.317+0800 I CONTROL [initandlisten]哥哥聪明吧

 

第五个报错: WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.需要将/sys/kernel/mm/transparent_hugepage/enabled设置为never解决办法就是设置never[root@18c ~]# cat /sys/kernel/mm/transparent_hugepage/enabled[always] madvise never[root@18c ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled[root@18c ~]# cat /sys/kernel/mm/transparent_hugepage/enabledalways madvise [never]

 

第六个报错: WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.需要将/sys/kernel/mm/transparent_hugepage/defrag设置为never解决办法就是设置never[root@18c ~]# cat /sys/kernel/mm/transparent_hugepage/defrag[always] madvise never[root@18c ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag[root@18c ~]# cat /sys/kernel/mm/transparent_hugepage/defragalways madvise [never]

 mongodb后台管理shell

如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。

MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。

当你进入mongoDB后台后,它默认会链接到 test 文档(数据库):

> 2+24> 3+69

现在测试插入一些简单的数据,并对插入的数据进行检索:

> use yuhuashiswitched to db yuhuashi> db.yuhuashi.insert({"name":"yuhuashi"})WriteResult({ "nInserted" : 1 })> show dbsadmin     0.000GBconfig    0.000GBlocal     0.000GByuhuashi  0.000GB> db.yuhuashi.find({"name":"yuhuashi"}){ "_id" : ObjectId("5bf3b67e01e6889d06eab63e"), "name" : "yuhuashi" }

转载地址:http://fjhji.baihongyu.com/

你可能感兴趣的文章
一文看清HBase的使用场景
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>