1-MongoDB - 各平台安装及配置MongoDB

before

截至到本篇博客编写时,MongoDB最新版本已经到了MongoDB4.4.3,但市场上的主流版本是3.4和3.6两个版本,所以,本次我们以3.6版本为例。

download

无论你下载哪个平台的MongoDB安装包,都可以在这个地址选择下载:

下载速度很慢,所以,这里提供了百度云盘的链接:https://pan.baidu.com/s/1BeupfSNTxsVrMKpAxbqKPQ 提取码:omce,其中:

  • Linux:mongodb-linux-x86_64-rhel70-3.6.12.tgz
  • Windows:mongodb-win32-x86_64-2008plus-ssl-3.6.12.zip
  • Mac OS:mongodb-osx-ssl-x86_64-3.6.12.tgz

for windows

win10 + mongodb3.6.12

首先,在 MongoDB2.2 版本后已经不再支持 Windows XP 系统。

另外,MongoDB为Windows平台提供msizip两种安装方式:

  • msi方式,一路一下一步,方便快捷,但只推荐MongoDB4.0及以上版本采用msi方式安装,因为MongoDB4.x版本对msi安装方式进行了优化,随着提示就可以完成配置,但3.x和更低的版本则仍旧需要在安装完毕后,手动做配置,所以低版本不推荐msi方式。
  • zip方式,解压即安装,可以将其安装到任意目录,后续都可以手动进行配置,比较灵活,推荐采用这种方式进行安装。

install

将zip包进行解压,其实解压后的目录就是MongoDB的安装目录,我这里已解压并重命名,并且手动在这个目录内创建:

  • data目录保存数据文件。
  • log目录保存日志文件。
  • mongodb.conf文件,是MongoDB的配置文件。

bin目录内,我们暂时需要了解两个文件:

mongo.exe	# MongoDB客户端软件
mongod.exe	# MongoDB服务端软件

配置环境变量

这一步的目的是,后续我们可以直接通过终端操作MongoDB。

步骤是此电脑--鼠标右键选择属性--高级系统设置--环境变量--系统变量选项,找到Path,选择新建,将C:\mongodb\bin目录添加进去,如下图:

最后选择保存即可。

编写配置文件

编写配置文件的目的是便于后续以配置文件的方式启动MongoDB服务。

打开mongodb.conf文件,写入如下内容,然后保存。

# 系统日志相关
systemLog:
  destination: file  # 使用文件存储日志
  path: C:\mongodb\log\mongodb.log  # 日志位置
  logAppend: true    # 是否以追加的形式记录日志

# 数据相关
storage:
  journal:  # 回滚日志
    enabled: true
  dbPath: C:\mongodb\data  # 数据存储目录

# 网络配置相关
net:
  port: 27017 # 默认端口
  bindIp: 127.0.0.1  # 绑定ip, 多个ip以逗号分隔

上面配置中的bindIp设置为127.0.0.1表示只能本地访问MongoDB,如果需要远程访问,还需要设置本机IP,然后重启服务。

将MongoDB服务添加Windows的服务

这一步的目的是将来在终端中通过net来管理MongoDB。

以管理员的身份打开终端,输入:

mongod --config C:\mongodb\mongodb.conf --install

上面的命令执行成功后,此时Windows的服务中就有了MongoDB的服务了。

你可以在Windows的服务中管理MongoDB,比如设置开机启动、手动等设置。

而我们现在则可以在终端中使用net来start和stop MongoDB了。

注意,只有以管理员身份打开的终端才能执行net命令。

测试MongoDB是否按照成功

前提是MongoDB服务正在运行。

终端(可以是非管理员身份打开的终端)输入mongo即可开启MongoDB客户端,输入相应命令来使用MongoDB服务了:

OK,安装完毕。

for centos7.9

cenots7.9 + mongodb3.6.12

系统要求

  • Redhat或者centos6.2以上系统,当然,centos7以上都无所谓了。
  • 系统开发包完整,因为MongoDB是C++编写,依赖C的环境
  • IP地址和hosts文件解析正常
  • iptables防火墙和SElinux关闭
  • 关闭大叶内存机制

关于大页内存:https://linux.cn/article-9450-1.html

centos系统关闭大页内存

vim /etc/rc.local追加如下内容,然后重新运行一下sh /etc/rc.local即可:

[root@cs software]# pwd
/opt/software
[root@cs software]# 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

[root@cs software]# sh /etc/rc.local 

完事检查是否设置成功,都是never即可:

[root@cs software]# cat /sys/kernel/mm/transparent_hugepage/enabled        
always madvise [never]
[root@cs software]# cat /sys/kernel/mm/transparent_hugepage/defrag 
always madvise [never]

PS:rc.local控制开机自启动。

注意,仅适用于centos系统,其他系统,如Ubuntu等参考官档

由于MongoDB通常都以非root用户操作,所以后续的操作示例中,如何判断是以什么用户操作的呢?

# 可以通过示例中的 "#" 和 "$" 来判断
[root@cs software]#  	# 这是root用户的操作
[mongod@cs mongodb]$	# 这是非root用户的操作

安装必要的依赖

yum install libcurl openssl gcc -y

创建mongod用户

MongoDB建议使用非root用户进行管理,所以我们创建一个mongod用户/用户组来管理MongoDB:

[root@cs software]# useradd mongod
[root@cs software]# passwd mongod
Changing password for user mongod.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

记录下,用户名是mongod,密码是1234

注意,此时我们还是以root用户在操作。

install

  • 创建必要的目录:
[root@cs software]# mkdir -p /data/mongodb_data/27017/{conf,log,data}

见名知意,conf是配置文件目录,log是日志目录,data是数据目录。而为了后续搭建MongoDB复制集和集群,这里的数据目录以端口号作为分割,一个端口号代表一个MongoDB实例。

  • 下载二进制包,或者使用我提供的也行:
[root@cs software]# pwd
/opt/software
[root@cs software]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.12.tgz
[root@cs software]# ls
mongodb-linux-x86_64-rhel70-3.6.12.tgz  redis
  • 解压:
[root@cs software]# tar xf mongodb-linux-x86_64-rhel70-3.6.12.tgz 
[root@cs software]# ls
mongodb-linux-x86_64-rhel70-3.6.12  mongodb-linux-x86_64-rhel70-3.6.12.tgz  redis

解压后的目录内只有bin目录对我们来说是有用的:

[root@cs software]# ls mongodb-linux-x86_64-rhel70-3.6.12
bin  LICENSE-Community.txt  MPL-2  README  THIRD-PARTY-NOTICES
[root@cs software]# ls mongodb-linux-x86_64-rhel70-3.6.12/bin/
bsondump         mongo   mongodump    mongofiles   mongoperf    mongorestore  mongostat
install_compass  mongod  mongoexport  mongoimport  mongoreplay  mongos        mongotop
  • 整理目录和授权。

我们将MongoDB的bin目录从新拷贝到/opt/software目录作为MongoDB的安装目录:

[root@cs software]# cp -r mongodb-linux-x86_64-rhel70-3.6.12/bin/ /opt/software/mongodb
[root@cs software]# ll mongodb/
total 310768
-rwxr-xr-x. 1 mongod mongod 13598456 Jan 13 11:50 bsondump
-rwxr-xr-x. 1 mongod mongod     7770 Jan 13 11:50 install_compass
-rwxr-xr-x. 1 mongod mongod 33775680 Jan 13 11:50 mongo				# client
-rwxr-xr-x. 1 mongod mongod 59656584 Jan 13 11:50 mongod			# server
-rwxr-xr-x. 1 mongod mongod 14463896 Jan 13 11:50 mongodump			# 备份恢复
-rwxr-xr-x. 1 mongod mongod 14024312 Jan 13 11:50 mongoexport		# 备份恢复
-rwxr-xr-x. 1 mongod mongod 13896704 Jan 13 11:50 mongofiles
-rwxr-xr-x. 1 mongod mongod 14165112 Jan 13 11:50 mongoimport		# 备份恢复
-rwxr-xr-x. 1 mongod mongod 59161264 Jan 13 11:50 mongoperf
-rwxr-xr-x. 1 mongod mongod 18735472 Jan 13 11:50 mongoreplay		# 备份恢复
-rwxr-xr-x. 1 mongod mongod 14499216 Jan 13 11:50 mongorestore		# 备份恢复
-rwxr-xr-x. 1 mongod mongod 34249592 Jan 13 11:50 mongos
-rwxr-xr-x. 1 mongod mongod 14170648 Jan 13 11:50 mongostat
-rwxr-xr-x. 1 mongod mongod 13796144 Jan 13 11:50 mongotop

现在,我们需要记住两个目录:

# MongoDB软件的安装位置
[root@cs mongodb]# pwd
/opt/software/mongodb
# MongoDB的数据及log、配置文件目录
[root@cs mongodb]# ls /data/mongodb_data/27017
conf  data  log

并且对这两个目录进行授权:

[root@cs mongodb]# chown -R mongod:mongod /opt/software/mongodb
[root@cs mongodb]# chown -R mongod:mongod /data/mongodb_data/27017
  • 环境变量设置

因为将来我们需要使用mongod用户来管理MongoDB,所以,只需要设置用户的私有变量即可。首先要切换到mongod用户,然后再设置:

[mongod@cs mongodb]# su - mongod
Password: 
Last login: Wed Jan 13 11:57:48 CST 2021 on pts/1
[mongod@cs ~]$ vim .bash_profile

export PATH=/opt/software/mongodb:$PATH

[mongod@cs ~]$ source .bash_profile

注意,此时我们是mongod用户来操作的。

  • 手动启动MongoDB服务。
[mongod@cs ~]$ mongod --dbpath=/data/mongodb_data/27017/data --logpath=/data/mongodb_data/27017/log/mongodb.log --logappend --port=27017 --fork
about to fork child process, waiting until server is ready for connections.
forked process: 8287
child process started successfully, parent exiting

其中:

  • --dbpath是数据存储目录。
  • --logpath是日志存储目录。
  • --logappend以追加的形式记录日志。
  • --port,端口号。
  • --fork后台运行。

创建配置文件

vim /data/mongodb_data/conf/mongodb.conf

# 系统日志相关
systemLog:
  destination: file  # 使用文件存储日志
  path: "/data/mongodb_data/27017/log/mongodb.log"  # 日志位置
  logAppend: true    # 是否以追加的形式记录日志

# 数据相关
storage:
  journal:  # 回滚日志
    enabled: true
  dbPath: "/data/mongodb_data/27017/data/"  # 数据存储目录

# 进程相关
processManagement:
  fork: true  # 后台运行

# 网络配置相关
net:
  port: 27017 # 默认端口
  bindIp: 127.0.0.1,10.0.0.200  # 绑定ip, 多个ip以逗号分隔

开启/关闭MongoDB

[mongod@cs ~]$ mongod -f /data/mongodb_data/27017/conf/mongodb.conf --shutdown
[mongod@cs ~]$ mongod -f /data/mongodb_data/27017/conf/mongodb.conf

使用systemd管理MongoDB的配置

使用root用户创建vim /etc/systemd/system/mongod.service

[mongod@cs mongodb]$ su root
Password: 
[root@cs mongodb]# vim /etc/systemd/system/mongod.service

[Unit]
Description=mongodb 
After=network.target remote-fs.target nss-lookup.target
[Service]
User=mongod
Type=forking
ExecStart=/opt/software/mongodb/mongod --config /data/mongodb_data/27017/conf/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/opt/software/mongodb/mongod --config /data/mongodb_data/27017/conf/mongodb.conf --shutdown
PrivateTmp=true  
[Install]
WantedBy=multi-user.target

现在,就可以使用systemctl来管理MongoDB了:

systemctl start/restart/stop/status mongod

现在,就有两套命令可以管理MongoDB的启停了,以root用户使用:

systemctl start/restart/stop/status mongod

使用普通用户mongod启停MongoDB:

[mongod@cs ~]$ mongod -f /data/mongodb_data/27017/conf/mongodb.conf --shutdown
[mongod@cs ~]$ mongod -f /data/mongodb_data/27017/conf/mongodb.conf

当然,你也可以mongod得身份使用systemctl来管理MongoDB,只需要根据提示输入密码就可以了:

[mongod@cs ~]$ systemctl restart mongod
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root                                          # 需要root身份才能使用 systemctl 
Password:                                                        # 输入root用的密码就可以了
==== AUTHENTICATION COMPLETE ===
[mongod@cs ~]$ 

测试,是否安装成功

无论是哪个用户启动了MongoDB服务,我们都以普通用户操作MongoDB,在任意路径下:

[mongod@cs mongodb]$ mongo
MongoDB shell version v3.6.12
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("4b23a3f9-8942-43c7-ac45-ed94dbf2bae6") }
MongoDB server version: 3.6.12
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2021-01-13T15:20:31.612+0800 I CONTROL  [initandlisten] 
2021-01-13T15:20:31.612+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2021-01-13T15:20:31.612+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2021-01-13T15:20:31.612+0800 I CONTROL  [initandlisten] 
> show databases;
admin   0.000GB
config  0.000GB
local   0.000GB
> use admin
switched to db admin
> show tables;
system.version

如果是复制集环境或者集群环境,可以通过端口号来指定启动不同的MongoDB实例:

[mongod@cs mongodb]$ mongo --port 27017

that's all,see also:

MongoDB中文网 | Windows下MongoDB的下载安装、环境配置教程图解 | windows安装mongodb | Linux 中的“大内存页”(hugepage)是个什么?

posted @ 2021-01-13 19:39  听雨危楼  阅读(662)  评论(0编辑  收藏  举报