Linux系统下MongoDB的安装
1.MongoDB简介
MongoDB是用C++语言编写的非关系型数据库。特点是高性能、易部署、易使用,存储数据十分方便,主要特性有:
- 面向集合存储,易于存储对象类型的数据
- 模式自由
- 支持动态查询
- 支持完全索引,包含内部对象
- 支持复制和故障恢复
- 使用高效的二进制数据存储,包括大型对象
- 文件存储格式为BSON(一种JSON的扩展)
2.MongoDB与关系型数据库对比
对比项 | MongoDB | MySQL Oracle |
---|---|---|
表 | 集合 | 二维表table |
表的一行数据 | 文档document | 一条记录record |
表字段 | 键key | 字段field |
字段值 | 值value | 值value |
主外键 | 无 | PK,FK |
灵活度扩展性 | 极高 | 差 |
逻辑结构关系对比
关系型数据库:
MySQL数据库(database)、表(table)、记录(rows)三个层次概念组成。
非关系型数据库:
MongoDB数据库(database)、集合(collection)、文档对象(document)三个层次概念组成。
MongoDB里的集合对应于关系型数据库里的表,但是集合中没有列、行和关系的概念,集合中只有文档,一个文档就相当于一条记录,这体现了模式自由的特点。
3.MongoDB基本概念
文档(document)是MongoDB中数据的基本单元,非常类似于关系型数据库系统中的行(但是比行要复杂的多);
集合(collection)就是一组文档,如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表;
MongoDB的单个实例可以容纳多个独立的数据库,每一个数据库都有自己的集合和权限。
MongoDB自带简洁但功能强大的JavaScript shell,这个工具对于管理MongoDB实例和操作数据作用非常大;
每一个文档都有一个特殊的键"_id",它在文档所处的集合中是唯一的,相当于关系数据库中的表的主键。
4.MongoDB数据类型
数据类型 | 描述 | 举例 |
---|---|---|
null | 表示空值或未定义的对象 | {“x”:null} |
布尔值 | 真或假:true或false | {“x”:true} |
32位整数 | 32位整数。shell是不支持该类型的,shell中默认会转换成64位浮点数 | |
64位整数 | 64位整数。shell是不支持该类型的,shell中默认会转换成64位浮点数 | |
64位浮点数 | 64位浮点数。shell中的数字就是这一种类型 | {“x”:3.14,“y”:3} |
字符串 | UTF-8字符串 | {“foo”:“bar”} |
符号 | shell不支持,shell会将数据库中的符号类型的数据自动转换成字符串 | |
对象id | 文档的12字节的唯一id | {“id”:ObjectId()} |
日期 | 从标准纪元开始的毫秒数 | {“date”:new Date()} |
正则表达式 | 文档中可以包含正则表达式,遵循JavaScript的语法 | {“foo”:/foobar/i} |
代码 | 文档中可以包含JavaScript代码 | {“x”:function(){}} |
未定义 | undefined | {“x”:undefined} |
数组 | 值的集合或者列表 | {“arr”: [“a”,“b”]} |
内嵌文档 | 文档可以作为文档中某个key的value | {“x”:{“foo”:“bar”}} |
5.使用RPM包(推荐)
5.1配置包管理系统
Create a
/etc/yum.repos.d/mongodb-org-4.0.repo
file so that you can install MongoDB directly usingyum
.
创建/etc/yum.repos.d/mongodb-org-4.0.repo
文件以便直接使用yum
安装MongoDB。
[solang@solang ~]$ sudo vi /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
5.2.安装MongoDB包
[solang@solang ~]$ sudo yum install -y mongodb-org
[solang@solang ~]$ sudo yum install -y mongodb-org-4.0.4 mongodb-org-server-4.0.4 mongodb-org-shell-4.0.4 mongodb-org-mongos-4.0.4 mongodb-org-tools-4.0.4
You can specify any available version of MongoDB. However
yum
upgrades the packages when a newer version becomes available. To prevent unintended upgrades, pin the package. To pin a package, add the followingexclude
directive to your/etc/yum.conf
file:
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
您可以指定任何可用的MongoDB版本。 但是,当更新版本可用时,
yum
会升级软件包。 为防止意外升级,将包固定。 要固定包,将以下exclude
指令添加到/etc/yum.conf
文件中
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
5.3目录和权限
By default, MongoDB instance stores:
- its data files in
/var/lib/mongo
- its log files in
/var/log/mongodb
默认情况下,MongoDB实例存储,data数据文件和log日志文件存放目录
By default, MongoDB runs using the
mongod
user account. If you change the user that runs the MongoDB process, you must also modify the permission to the/var/lib/mongo
and/var/log/mongodb
directories to give this user access to these directories.默认情况下,MongoDB使用
mongod
用户帐户运行。 如果更改运行MongoDB进程的用户,则还必须
修改/var/lib/mongo
和/var/log/mongodb
目录的权限,以授予此用户访问这些目录的权限。
To specify a different log file directory and data file directory, edit the
systemLog.path
andstorage.dbPath
settings in the/etc/mongod.conf
. Ensure that the user running MongoDB has access to these directories.要指定其他日志文件目录和数据文件目录,请编辑
/etc/mongod.conf
中的systemLog.path
和storage.dbPath
设置。 确保运行MongoDB的用户可以访问这些目录。
5.4运行MongoDB过程步骤
5.4.1启动MongoDB
[solang@solang ~]$ sudo service mongod start
Redirecting to /bin/systemctl start mongod.service
5.4.2验证MongoDB启动成功
[solang@solang ~]$ sudo cat /var/log/mongodb/mongod.log
2018-11-10T20:33:23.906+0800 I NETWORK [initandlisten] waiting for connections on port 27017
有一行日志内容
[initandlisten] waiting for connections on port
<port>
where
<port>
is the port configured in /etc/mongod.conf, 27017 by default.
5.4.3开机自动启动
开机MongoDB自启动
You can optionally ensure that MongoDB will start following a system reboot by issuing the following command:
sudo chkconfig mongod on
您可以选择通过发出以下命令来确保MongoDB将在系统重新启动后启动
sudo chkconfig mongod on
5.4.4停止MongoDB
[solang@solang ~]$ sudo service mongod stop
5.4.5重启MongoDB
[solang@solang ~]$ sudo service mongod restart
5.4.6使用mongo shell
[solang@solang ~]$ mongo
5.5卸载MongoDB过程步骤
5.5.1停止MongoDB
[solang@solang ~]$ sudo service mongod stop
5.5.2删除包
[solang@solang ~]$ sudo yum erase $(rpm -qa | grep mongodb-org)
5.5.3删除数据目录
删除日志存放目录和数据存放目录
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo
[solang@solang ~]$ sudo rm -r /var/log/mongodb
[solang@solang ~]$ sudo rm -r /var/lib/mongo
6.使用tar包
6.1安装依赖包
[solang@solang ~]$ sudo yum install libcurl openssl
6.2下载tar包
由于Linux系统使用的是CentOS7.4,操作系统选择RHEL 7.0 Linux 64-bit x64
[solang@solang ~]$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.4.tgz
6.3解压到安装目录
[solang@solang ~]$ tar -zxvf mongodb-linux-x86_64-rhel70-4.0.4.tgz -C /usr/local/app/
[solang@solang ~]$ cd /usr/local/app/
[solang@solang app]$ mv mongodb-linux-x86_64-rhel70-4.0.4/ mongodb-4.0.4/
6.4设置环境变量
[solang@solang ~]$ vi .bash_profile
export MONGODB_HOME=/usr/local/app/mongodb-4.0.4
export PATH=$MONGODB_HOME/bin:$PATH
[solang@solang ~]$ source .bash_profile
6.5运行MongoDB
If you installed manually by downloading the tarballs, you can create the directories using
mkdir -p<directory>
orsudo mkdir -p <directory>
depending on the user that will run MongoDB. (See your linux man pages for information onmkdir
andsudo
.)
如果通过下载tar包手动安装,则可以使用mkdir -p <directory>
或sudo mkdir -p <directory>
创建目录,具体取决于将运行MongoDB的用户。(有关mkdir
和sudo
的信息,请参阅linux手册页。)
MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以需要手动创建data目录,并在data目录中创建db目录。
注意:/data/db
是MongoDB默认的启动的数据库路径(--dbpath
)。如果你的数据库目录不是/data/db
,可以通过mongod --dbpath 目录
来指定。
[solang@solang ~]$ sudo mkdir -p /data/db
## 设置赋予目录读写权限
[solang@solang data]$ sudo chmod o+rwx /data/db
启动MongoDB
[solang@solang data]$ mongod
重新打开一个命令行窗口,启动mongo shell
[solang@solang ~]$ mongo
本文参考:
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/