linux运维、架构之路-MongoDB单机部署
一、MongoDB介绍
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系数据库当中功能最丰富,最像关系型的数据库。
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、安装所需依赖
yum install libcurl openssl
2、下载源码包
下载地址: https://www.mongodb.com/download-center?jmp=nav#community
3、创建所需目录
mkdir -p /app/mongodb4.0/{install,logs,conf,data}
4、上传解压 mongodb-linux-x86_64-4.0.0.tgz 至 /app/mongodb4.0/install目录下
tar xf mongodb-linux-x86_64-4.0.0.tgz -C /app/mongodb4.0/install/
5、创建MongoDB配置文件、日志文件
touch /app/mongodb4.0/logs/mongodb.log touch /app/mongodb4.0/conf/mongodb.conf
6、编辑mongodb.conf
port=27017 #以后台方式运行 fork=true #数据库日志存放目录 logpath=/app/mongodb4.0/logs/mongodb.log #以追加的方式记录日志 #logappen=true #数据库数据存放目录 dbpath=/app/mongodb4.0/data #开启用户认证true auth=false #过滤一些无用的日志信息,若需要调试使用请设置为false quiet=true #auth=true ##mongodb所绑定的ip地址 bind_ip = 0.0.0.0
7、启动MongoDB
/app/mongodb4.0/install/bin/mongod -f /app/mongodb4.0/conf/mongodb.conf
8、配置MongoDB
①进入MongoDB命令模式
/app/mongodb4.0/install/bin/mongo 127.0.0.1:27017
②创建数据库
use demon
③创建用户管理员
在admin数据库中添加超级角色的用户
use admin db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]});
创建普通用户及数据库
use demon db.createUser({user:"demon",pwd:"demon",roles:[{role:"readWrite",db:"demon"}]});
权限说明
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 备份恢复角色:backup、restore;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
- 内部角色:__system
9、停止MongoDB
/app/mongodb4.0/install/bin/mongod -f /app/mongodb4.0/conf/mongodb.conf -shutdown
10、编辑mongodb.conf auth=true
/app/mongodb4.0/install/bin/mongod -f /app/mongodb4.0/conf/mongodb.conf
11、使用上面创建的用户登录MongoDB
/app/mongodb4.0/install/bin/mongo --port 27017 -u "demon" -p "demon" --authenticationDatabase "demon"
四、开发MongoDB启动脚本
1、编写脚本
#!/bin/bash # chkconfig: - 98 21 Mongod_Path="/app/mongodb4.0/install/bin/mongod" Mongod_Conf="/app/mongodb4.0/conf/mongodb.conf" usage() { echo "usage: $0 [start|stop|restart]" } start_Mongod() { $Mongod_Path -f $Mongod_Conf echo "Mongodb is starting" } stop_Mongod() { $Mongod_Path -f $Mongod_Conf --shutdown echo "Mongodb is stopped" } main() { case $1 in start) start_Mongod;; stop) stop_Mongod;; restart) stop_Mongod && start_Mongod;; *) usage; esac } main $1
2、授予脚本可执行权限
chmod +x /etc/init.d/mongod
chkconfig --add mongod
3、启动、停止、重新MongoDB服务
/etc/init.d/mongod start /etc/init.d/mongod stop /etc/init.d/mongod restart
五、MongoDB数据库的相关操作
> show dbs; #查看当前实例下的数据库
> show databases; #兼容关系型数据库MySQL命令
> use local; #切换数据库local
> show collections; #查看数据库local的集合
> show tables; #兼容关系型数据库MySQL命令
常用的操作如下:
成功最有效的方法就是向有经验的人学习!