DBA MongoDB 基础学习

前言

​ MongoDB的官方文档非常全面,可供开发者进行查阅:MongoDB中文文档

​ 同时,本系列笔记将会按照MongoDB权威指南一书中的重点进行归类,方便读者学习。

MongoDB简介

基础概念

​ MongoDB被誉为是最像SQL的NoSQL,也是非关系数据库中最火热的产品,甚至MySQL中都能见到MongoDB的很多设计理念。

​ 下面是一些MongoDB与SQL之间概念的一些差异:

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

​ 值得一提的是,MongoDB中支持事务,这是其他很多NoSQL都不支持的。

版本介绍

​ MongoDB第一版在2009年面世,由DoubleClick公司(2013年时已更名MongoDB)开发,一经推出就引起了轩然大波,因为它结束了关系型数据库产品对行业的统治,目前版本种类较少,主流版本为4.x,那么在接下来我们也将使用目前较新的4.2版本进行学习(系统为Centos7.3)。

​ 下面是MongoDB的版本形式,摘自官网:

MongoDB的版本的形式X.Y.Z,其中X.Y指的是一个版本系列或开发系列,而Z指修订/补丁号。

  • 如果Y是偶数,则X.Y指发布系列;例如, 4.0发行系列和4.2发行系列。发布系列稳定且适合生产。
  • 如果Y是奇数,则X.Y指一个开发系列;例如, 4.1开发系列和4.3开发系列。开发系列仅用于测试而不是生产。

例如,在MongoDB版本中4.0.12,4.0指的是发行系列,而.12指的是修订版。

与SQL区别

​ MongoDB中数据基本单元名为文档,一个文档相当于SQL中的一条记录行。

​ 而集合可以将它与SQL中的表进行一个对应关系。

​ MongoDB中自带了一个由JavaScript编写的shell,能够管理MongoDB实例和操作数据

​ 对于文档来说,每一个文档都有一个特殊的_id键,非空且唯一,与SQL中的主键相同

​ 在MongoDB中,更加注重数据的整体存放,而不同于SQL中分表的概念,如下是对多表关系进行存储时MongoDB与MySQL的一些差异。

# MySQL多表关系存储:

---------------------------------------
|  id  | name | age | gender | grades |
---------------------------------------
|  1   | Jack |  18 |  male  |    1   |
---------------------------------------

-----------------------------
|  id  |  Js |  Py |   Go   |
-----------------------------
|  1   |  88 |  96 |   78   |
-----------------------------


# MongoDB多表关系存储:
{
	"_id" : ObjectId("uuid")
	"id" : "1",
	"name" : "Jack",
	"age" : "18",
	"gender" : "male",
	"grades" : {
		"Js" : "88",
		"Py" : "96",
		"Go" : "78",
	}
}

安装MongoDB

系统准备

​ 系统为Centos7.3,在此之前需要做一些准备:

  1. 关闭防火墙:

    T > systemctl stop firewalld
    T > systemctl disable  firewalld
    
  2. 关闭SElinux:

    T > setenforce 0
    T > vim /etc/selinux/config
    
    SELINUX=disabled
    
  3. 关闭大页内存机制,以提高MongoDB的性能:

    T > vim /etc/rc.local
    
    # 最后添加
    if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
      echo never > /sys/kernel/mm/transparent_hugepage/enabled
    fi
    if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
       echo never > /sys/kernel/mm/transparent_hugepage/defrag
    fi
    		
    echo never > /sys/kernel/mm/transparent_hugepage/enabled		
    echo never > /sys/kernel/mm/transparent_hugepage/defrag	
    

配置目录

​ 我们需要三个目录来存放MongoDB服务的不同的数据:

T > mkdir -p /usr/local/mongodb/conf
T > mkdir -p /usr/local/mongodb/logs
T > mkdir -p /usr/local/mongodb/data

软件下载

点我跳转至下载页,选择好版本后进行下载,在这里我们选择免编译版本的tgz格式:

image-20210309155842713

​ 你也可以使用wget命令,进行下载:

T > cd ~
T > wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.12.tgz

免编译安装

​ 在下载完成后,执行解压命令,解压至当前路径下,并将bin目录拷贝走:

T > tar -zxvf mongodb-linux-x86_64-rhel70-4.2.12.tgz 
T > cp -a ~/mongodb-linux-x86_64-rhel70-4.2.12/bin /usr/local/mongodb/
T > mv ~/mongodb-linux-x86_64-rhel70-4.2.12 /usr/local/tmp

用户与授权

​ 创建管理和使用MongoDB目录的用户:

T > groupadd mongod
T > useradd -g mongod mongod

​ 对目录进行授权:

T > chown -R mongod:mongod /usr/local/mongodb

环境变量

​ 将MongoDB存放至环境变量中:

T > vim /etc/profile

export PATH=/usr/local/mongodb/bin:$PATH

T > source /etc/profile

配置文件

​ MongoDB的配置文件会比较复杂,使用以下配置文件进行简单的配置:

T > vim /usr/local/mongodb/conf/mongod.conf

systemLog:
   destination: file
   path: "/usr/local/mongodb/logs/mongod.log"
   logAppend: true
storage:
   dbPath: "/usr/local/mongodb/data"
   journal:
      enabled: true
processManagement:
   fork: true
net:
   bindIp: 0.0.0.0
   port: 27017
setParameter:
   enableLocalhostAuthBypass: false

常规服务

​ 使用常规的操作来开启MongoDB的服务进程,指定配置文件启动:

T > mongod -f /usr/local/mongodb/conf/mongod.conf
# 亦可使用 --conifg参数

​ 关闭MongoDB的服务进程:

T > mongod -f /usr/local/mongodb/conf/mongod.conf --shutdown

​ 登录MongoDB:

T > mongo
M > exit

sys服务

​ 使用sys服务管理MongoDB,执行如下操作:

T > cat > /etc/systemd/system/mongod.service <<EOF
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
User=mongod
Group=mongod
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongod.conf
ExecReload=/bin/kill -s HUP
ExecStop=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongod.conf --shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF

​ 重新进行授权操作,至此sys服务制作完成:

T > chown -R mongod:mongod /usr/local/mongodb

​ 设置和关闭开机启动(可选):

T > systemctl enable mongod.service
T > systemctl disable mongod.service

​ 下面就可以通过sys服务来启动和管理MongoDB服务了:

T > systemctl start mongod.service
T > systemctl stop mongod.service
T > systemctl restart mongod.service
T > systemctl status mongod.service
posted @ 2021-03-09 20:56  云崖君  阅读(104)  评论(0编辑  收藏  举报