1 理论知识
1.1 简介
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。
Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
1.2 基本概念
1.2.1 面向集合(Collection-Oriented)
– 即数据被分组存储在数据集中,被称为一个集合(Collection)。
– 每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。
注:
1)集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
2)Nytro MegaRAID技术中的闪存高速缓存算法,能够快速识别数据库内大数据集中的热数据,提供一致的性能改进。
1.2.2 模式自由(schema-free)
即时,
– 无需关注数据库的任何结构定义
– 支持把不同结构的文件存储在同一个数据库里
所谓的模式自由,实现方法如下,
– 存储在集合中的文档,被存储为键-值对的形式
– 键用于唯一标识一个文档,为字符串类型
– 值则可以是各种复杂的文件类型
1.3 特点
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
– 面向集合存储,易存储对象类型的数据
– 模式自由
– 支持动态查询
– 支持完全索引,包含内部对象
– 支持查询
– 支持复制和故障恢复
– 使用高效的二进制数据存储,包括大型对象(如视频等)
– 自动处理碎片,以支持云计算层次的扩展性。
– 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言
– 文件存储格式为BSON(一种JSON的扩展)
– 可通过网络访问。
1.4 应用场景
– 网站实时数据处理,适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性
– 缓存,高性能适合作为架构的缓存层,在系统重启之后持久化缓存层可以避免下层的数据源过载
– 高伸缩性的架构,非常适合由数十或数百台服务器组成的数据库,(路线图中已经包含对MapReduce引擎的内置支持)
1.5 不适用的环境
– 要求高度事务性的系统
– 传统的商业智能应用
– 复杂的跨文档(表)级联查询
2 安装MongoDB
2.1 基础配置
2.1.1 配置yum源
curl https://repo.mongodb.org/yum/redhat/mongodb-org-3.0.repo > /etc/yum.repos.d/mongodb-org-3.0.repo
另外,如果以上源过期或无法使用,请从如下连接选择新的源,
http://repo.mongodb.org/
2.1.2 安装基础包
yum install -y mongodb-org yum install -y policycoreutils-python
2.1.3 配置SELinux
semanage port -a -t mongod_port_t -p tcp 27017 setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2.1.4 配置防火墙
firewall-cmd --permanent --add-port 27017/tcp firewall-cmd --reload firewall-cmd --list-all
2.2 安装配置
2.2.1 配置安装目录
mkdir -p /data/mongodb chown mongod:mongod /data/mongodb/ chmod 755 /data/mongodb/
2.2.2 准备配置文件
cp /etc/mongod.conf /etc/mongod.conf.defautl vim /etc/mongod.conf
修改配置如下:
logpath=/var/log/mongodb/mongod.log logappend=true fork=true dbpath=/data/mongodb pidfilepath=/var/run/mongodb/mongod.pid bind_ip=0.0.0.0
另外,某些版本的参数定义格式可能会有所不同,
systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log storage: dbPath: /data/mongodb journal: enabled: true processManagement: fork: true pidFilePath: /var/run/mongodb/mongod.pid net: port: 27017 bindIp: 0.0.0.0
2.2.3 重启服务使配置生效
/etc/init.d/mongod start chkconfig mongod on
另外,某些系统的启动方法可能会有差异,
systemctl start mongod systemctl enable mongod
如果启动遇到问题,可以使用如下命令查看启动日志或调试,
grep mongod /var/log/messages mongod --repair
2.2.4 启用安全认证
1)增加管理账户
mongo
输入如下配置:
use admin db.createUser( { user: "root", pwd: "rootpwd", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) quit()
2)启用认证
vim /etc/mongod.conf
增加如下参数:
auth=true
另外,某些版本的参数定义格式可能会有所不同,
security: authorization: enabled
2.2.5 配置Limits
vim /etc/security/limits.d/mongod.conf
输入如下配置:
mongod soft nofile 65536 mongod hard nofile 65536 mongod soft nproc 65536 mongod hard nproc 65536 mongod soft fsize unlimited mongod hard fsize unlimited mongod soft cpu unlimited mongod hard cpu unlimited mongod soft as unlimited mongod hard as unlimited
2.2.6 重启服务使配置生效
/etc/init.d/mongod restart
另外,某些系统的启动方法可能会有差异,
systemctl restart mongod
2.2.7 测试
mongo -u "root" -p "rootpwd" --authenticationDatabase "admin"
或者
mongo
输入如下认证命令:
use admin db.auth("root","rootpwd")
2.3 配置日志切割
参阅文档:
================================================
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
https://docs.mongodb.com/manual/tutorial/enable-authentication/
https://docs.mongodb.com/manual/reference/ulimit/index.html
没有评论