暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

Linux下安装MongoDB.5.0

原创 怕晒的太阳 2022-09-19
2635

1. 安装准备

1.1. 创建用户

useradd -rmU mongodb

echo "MongoDB@123"|passwd --stdin mongodb

#echo后面跟的修改的密码,上面命令是非交互修改

1.2. 资源限制

vi /etc/security/limits.conf

mongodb soft nproc unlimited

mongodb hard nproc unlimited

mongodb soft nofile 102400

mongodb hard nofile 102400

mongodb soft stack unlimited

mongodb hard stack unlimited

mongodb soft core unlimited

mongodb hard core unlimited

mongodb soft memlock unlimited

mongodb hard memlock unlimited

1.3. 预装依赖包

yum install -y glibc libcurl openssl

2. 安装MongoDB

2.1. 下载安装包

下载地址:https://www.mongodb.com/try/download/community根据服务器的版本进行选择相应的MongoDB版本,这里以CentOS7为例 


## 或者下载 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.12.tgz

2.2. 解压安装包

将安装包上传到/data,root下然后执行解压操作如下:

tar -zxvf mongodb-linux-x86_64-rhel70-*.tgz

2.3. 创建安装目录

将解压的安装包的文件重新命名,执行cd /data;mv mongodb-linux-x86_64-rhel70-*  mongodb,然后进入cd /data/mongodb目录,执行如下命令,每台安装数据库的主机都要执行:

mkdir data  #数据库目录

mkdir log  #日志目录

mkdir conf && touch ./conf/mongodb.conf  #配置文件目录 

mkdir run  #保留运行pid信息


修改目录权限和配置文件权限,执行过程如下:

cd /data/mongodb

chmod 644 conf data log run;

chmod 644 ./conf/mongodb.conf

2.4. 增加配置文件

创建mongodb数据库的配置文件,需要增加下入信息:

vim /data/mongodb/conf/mongod.conf

# mongod.conf

# for documentation of all options, see:

#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.

systemLog:

  destination: file

  logAppend: true

  path: /data/mongodb/log/mongod.log

# Where and how to store data.

storage:

  dbPath: /data/mongodb/data

  journal:

    enabled: true

#  engine:

#  mmapv1:

#  wiredTiger:

# how the process runs

processManagement:

  fork: true  # fork and run in background

  pidFilePath: /data/mongodb/run/mongod.pid  # location of pidfile

  timeZoneInfo: /usr/share/zoneinfo

# network interfaces

net:

  port: 27039  #端口可以根据实际情况修改

  bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

  maxIncomingConnections: 65536

security:

  authorization: disabled

  #authorization: enabled

  #clusterAuthMode: keyFile

  #keyFile: /data/mongodb/conf/mongodb-keyfile

## slow query

operationProfiling:

  slowOpThresholdMs: 100

  mode: off

replication:  #如果是安装单机此处以下的参数都注释,他们是主从的参数

  oplogSizeMB: 1024

  replSetName: mongo_replicas  #集群名称,初始化主从使用

  #secondaryIndexPrefetch: all  # specify index prefetching behavior (if secondary) [none|_id_only|all]

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

2.5. 创建数据库用户

创建完成数据库用户以后,一定注意修改数据库文件目录的属组:chown -R mongodb. /data/mongodb。修改属组以后才能保证数据库启动。

useradd -rmU mongodb

echo "MongoDB@123"|passwd --stdin mongodb

#echo后面跟的修改的密码,上面命令是非交互修改

 

如果是安装执行到此,mongodb数据库的单机安装完成,下一步跳到第三章节添加自动任务即可。手工启动数据库,切换到su - mongodb数据库用户,添加环境变量:

#添加环境变量

export MONGODB_HOME=/data/mongodb

export PATH=$PATH:$MONGODB_HOME/bin


手工启动方式:mongod -f /data/mongodb/conf/mongod.conf。使用命令ps ux查询进程,如果有如下进程表示启动成功。


如果停止数据执行:mongod -f /data/mongodb/conf/mongod.conf --shutdown。

如果不需要创建主副本关系直接跳转至2.8小节创建数据库用户。

2.6. 搭建副本集

如果需要搭建一个或者多个副本集。单节点的搭建需要从第二章节2.2到2.5小节重复操作即可。操作完成后,启动所有节点的MongoDB单机数据库,找一台主机切换到mongodb数据库用户登录客户端执行如下操作建立主副本关系:


mongo --host localhost --port 27039   #port端口,host主机地址

use admin  #切换到数据库admin

cfg={

_id:"mongodb",    #mongodb集群名称,保持所有节点一致即可,来源于mongod.conf

members:[

{_id:0,host:'10.17.10.xx:27039'},

{_id:1,host:'10.17.10.xx:27039'}

]

};

rs.initiate(cfg)   #使配置生效.

rs.conf()    #查询配置情况

rs.status()   #可以查询主副本详细情况。

2.7. 搭建仲裁节点

如果需要搭建自动切换的MongoDB数据库,需要选择其中一个节点能够仲裁,但是此种方式需要至少三个节点。单节点的搭建需要从第二章节2.2到2.5小节重复操作即可。


单节点搭建完成后,登录客户端操作如下数据库命令建立主副本仲裁关系:

mongo --host localhost --port 27039   #port端口,host主机地址

use admin

cfg={

_id:"mongodb",    #mongodb集群名称,保持所有节点一致即可,来源于mongod.conf

members:[

{_id:0,host:'10.17.10.xx:27039',priority:9},  #priority参数0-100越大表示优先升为主节点

{_id:1,host:'10.17.10.xx:27039',priority:1},

{_id:2,host:'10.17.10.xx:27039',arbiterOnly:true}   #arbiterOnly设置仲裁参数

]

};

rs.initiate(cfg)   #使配置生效.

rs.conf()    #查询配置情况

rs.status()   #可以查询主副本详细情况。

出现如下图的提示表示主从初始化成功。


2.8. 创建数据库用户

登录数据库主节点,执行如下命令:

先进入 admin 数据库,创建 root 用户

use admin

##创建一个root账号

db.createUser({

user:"admin",

pwd:"123456",

roles:[{role:"root",db:"admin"}]

});

db.system.users.find();   #查询用户信息

db.auth('admin','123456')  #使用认证范式登录需要执行


具体的用户操作参照:

https://blog.51cto.com/u_15127570/3555814?abTest=51cto内建的角色

数据库用户角色:read、readWrite;

数据库管理员角色:dbAdmin、userAdmin、dbOwner;

集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

备份恢复角色:backup、restore;

所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

内部角色:__system

MongoDB角色说明

普通用户角色:

Read:允许用户读取指定数据库。

readWrite:允许用户读写指定数据库。

管理员角色:

dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户。

dbOwner:单数据库最大权限(dbAdmin+userAdmin)。

所有数据库角色:

readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

root:只在admin数据库中可用。超级账号,超级权限。

MongoDB用户角色配置原则如下:

普通库的只读用户配置read角色;

普通库的一般用户建议配置readWrite角色,可以根据需要同时配置userAdmin、dbAdmin角色;

普通库的管理员配置dbOwner角色;

实例超级管理员配置root角色。

2.9. 认证登录

在非认证登录情况下,建完数据库用户后。业务需要连接MongoDB数据库必须开启认证登录否则无法正常操作数据库。需要开启一下参数,然后重启数据库。

  authorization: enabled

  clusterAuthMode: keyFile

  keyFile: /data/mongodb/conf/mongodb-keyfile

其中keyFile需要通过如下操作:

主库生成key文件并传送到从服务器上

openssl rand -base64 666 > /data/mongodb/conf/mongodb-keyfile 

chmod 600  /data/mongodb/conf/mongodb-keyfile 

开启认证以后,需要找一台安装mongodb的主机远程登录一下,如果出现如下提示表示成功。具体远程登录命令:mongo --host 远程登录IP地址 --port 端口 -u admin


3. MongoDB开机启动

安装MongoDB数据库单机或者集群,需要添加开机启动需要执行如下操作。创建/usr/lib/systemd/system/mongod.service,修改权限chmod 644 /usr/lib/systemd/system/mongod.service文件添加如下内容:

[Unit]

Description=MongoDB Database Server

Documentation=https://docs.mongodb.org/manual

After=network.target

[Service]

User=mongodb

Group=mongodb

Environment="MONGODB_HOME=/data/mongodb/bin/"

ExecStart=/data/mongodb/bin/mongod -f /data/mongodb/conf/mongod.conf

ExecStop=/data/mongodb/bin/mongod -f /data/mongodb/conf/mongod.conf --shutdown

PermissionsStartOnly=true

Type=forking

# file size

LimitFSIZE=infinity

# cpu time

LimitCPU=infinity

# virtual memory size

LimitAS=infinity

# open files

LimitNOFILE=64000

# processes/threads

LimitNPROC=64000

# locked memory

LimitMEMLOCK=infinity

# total threads (user+kernel)

TasksMax=infinity

TasksAccounting=false

# Recommended limits for for mongod as specified in

# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

 

[Install]

WantedBy=multi-user.target

 

添加完成后执行如下命令创建开机任务:

systemctl daemon-reload

systemctl enable mongod.service

设置开机启动以后,执行如下命令启动和查询数据库启动状态

systemctl start mongod.service   

systemctl status mongod.service

最后修改时间:2022-11-24 16:43:49
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论