本文共 9081 字,大约阅读时间需要 30 分钟。
参考资料:
也是第一次接触mongodb数据库,那么什么是mongodb数据库?
下面引用相关文档的介绍:
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
学习任何数据库都是从安装开始,下面就一起来看看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/