MongoDB(2.2)MongoDB的安装与基本使用

Posted 郭大侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB(2.2)MongoDB的安装与基本使用相关的知识,希望对你有一定的参考价值。

【1】前置环境修改

【1.1】修改 /etc/hosts

vim /etc/hosts

192.168.239.129 db3
192.168.239.131 db4
192.168.239.130 db5

【1.2】安装相关依赖包

(1)配置好yum源,本地和网络都可以(yum源配置、epel源配置

(2)安装相关依赖包

yum install -y cyrus-sasl cyrus-sasl-plain cyrus-sasl-gssapi krb5-libs lm_sensors-libs net-snmp-agent-libs net-snmp openssl openssl-devel rpm-libs tcp_wrappers-libs

【1.3】关闭防火墙与SELINUX安全认证

#(1)关闭防火墙:
  systemctl disable firewalld

#(2)关闭selinux
  vim /etc/selinux/config
  SELINUX=disabled

#核验
  getenforce

【1.4】优化 linux 内核参数

echo "vm_zone_reclaim_mode=0" >> /etc/sysctl.conf
sysctl -p

#1.如果该参数值为0,那么当本地CPU节点所在区域内存使用完,系统会倾向于从其他节点分配内存
#2.如果改参数为1,那么当本地CPU节点所在区域内存使用完,系统倾向于回收本地CPU的Cache内存

【1.5】禁止Transparent Huge Pages(THP)大内存数据页(2M一页)

原本linux的页是4K,但linux默认设置开启大内存页,大小为2M,会导致锁啊、吞吐量等问题。

服务器重启后立即生效办法:(如果服务器配置高,建议开启)

#vim /etc/rc.local

if test -f /sys/kernet/mm/transparent_hugepage/enabled;then
echo never >/sys/kernel/mm/transparent_hugepage/enabled
fi

if test -f /sys/kernet/mm/transparent_hugepage/defrag;then
echo never >/sys/kernel/mm/transparent_hugepage/defrag
fi

【1.6】创建Mogodb目录与用户权限

mkdir -p /mongodb
mkdir -p /mongodb{data,log,apps}

/usr/sbin/grouadd -g 10001 mongodb
/usr/sbin/useradd -u 10001 -g mongodb mongodb
id mongodb
passwd
chown -R mongodb:mongodb /mongodb
chmod -R 775 /mongodb

【1.7】优化linux读取性能,不适用atime属性记录文件操作时间信息

vim /etc/fstab

..... /mongodb xfs     default,noatime    1  2

【1.8】修改linux软硬件对于 mongodb 用户的最大连接数

vim /etc/security/limits.conf

mongodb    hard  nofile    25600
mongodb    soft  nofile    25600
mongodb    hard  nproc     25600
mongodb    soft  nproc     25600

 

【2】下载安装 mongodb

【2.1】下载mongodb

(1)下载官网:https://www.mongodb.com/download-center/community

(2)linux下载:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.18.tgz

【2.2】安装依赖

(1)配置好yum源,本地和网络都可以(yum源配置、epel源配置

(2)安装相关依赖包

yum install -y cyrus-sasl cyrus-sasl-plain cyrus-sasl-gssapi krb5-libs lm_sensors-libs net-snmp-agent-libs net-snmp openssl openssl-devel rpm-libs tcp_wrappers-libs

【2.3】解压/配置环境变量

#构建目录和用户
mkdir -p /mongodb
mkdir -p /mongodb/{data,logs,apps}

/usr/sbin/groupadd -g 10001 mongodb
/usr/sbin/useradd -u 10001 -g mongodb mongodb
id mongodb
chown -R mongodb:mongodb /mongodb
chmod -R 775 /mongodb
#解压
su
- mongodb cd /mongodb/apps tar -zxvf /soft/mongodb-linux-x86_64-rhel70-4.0.18.tgz ln -s /mongodb/apps/mongodb-linux-x86_64-rhel70-4.0.18/ /mongodb/apps/mongodb

#用户环境变量
vi ~/.bash_profile
PATH=${PATH}:$HOME/.local/bin:/mongodb/apps/mongodb/bin:$HOME/bin

#全局环境变量
echo "export PATH=${PATH}:/mongodb/apps/mongodb/bin" >> /etc/profile
source /etc/profile

【2.4】mongodb.conf 配置文件编辑

vim /mongodb/apps/mongodb/bin/mongodb.conf

dbpath=/mongodb/data
logpath=/mongodb/logs/mongodb.log
port=27017
fork=true #是否后台守护进程
auth=true
#noauth=true
#verbose=true  #打印更完整的详细信息
#vvvv=true
journal=true   #使用之后备份容灾比较容易保障
maxConns=500 #最大连接数
logappend=true #是否开启日志追加
directoryperdb=true  #数据目录存储模式,是不是每个数据库一个目录
#pidfilepath=/var/run/mongo.pid #进程文件
#cpu=true #为真的话,每4S报告一次CPU的使用情况,信息打出到日志
#nohttpinterface=false #是否打开http网页管理接口
#notablescan=false #不禁止表扫描
#profile=0 #数据库性能分析的
#slowms=200 #慢查询时间200ms
#quiet=true #安静的日志输出
#syncdelay=60 #刷新日志的频率
bind_ip=127.0.0.1,192.168.239.131

 

【2.5】启动和停止、登录 mongodb

#【1】启动
1):mongod --config /mongodb/apps/mongodb/bin/mongodb.conf (2):nohup mongod --dbpath /mongod/data --config /mongodb/apps/mongodb/bin.mongodb.conf & #自动启动 Auto Start vim /etc/rc.d/rc.local su - mongodb -c "mongod --config /mongodb/apps/mongodb/bin/mongodb.conf &" #【2】停止 stop -2(在进程退出之前保存数据) (1kill -2 `ps -ef|grep mongod|grep -v grep|awk \'{print $2}\'` (2kill -2 pid3)mongod  --shutdown --config /mongodb/apps/mongodb/bin/mongodb.conf  mongo -port 27107 use admin db.shutdownServer(); 

#【3】登录

#【1】登录

本机:mongo

通用:mongo --host serverip:port

演示:mongo --host 192.168.239.131:27017

 

【3】MongoDb的基本使用

(1)use admin :切换数据库(shutdown createuser 等操作都需要在这个库下操作)

(2)db.createUser({user:"admin",pwd:"123456",roles:["root"]})  :创建一个管理员用户

(3)db.dropUser("admin"):删除用户

(4)db.auth("admin","123456"):切换登录用户

(5)db.version() :查看版本

(6)实践、创建用户应用权限:创建一个read_user用户,并给予readdb数据库的读写权限

db.createUser(

{

  user:"read_user"

  pwd:"read_123456"

  roles:[

    {

      role:"readWrite",db:"readdb"

    }

      ]

}

)

然后,验证账户是否可用

use readdb

db.auth("read_user","read_123456")

(7)授权: db.grantRolesToUser( "admin" , [ { role: "hostManager", db: "admin" } ])

(8)获取当前使用的数据库名: db.getName()

 

 

 

 

【N】报错处理 

【N.1】To see additional information in this output, start without the "--fork"

ERROR: child process failed, exited with error number 51

[2020/1/7 17:09:56] To see additional information in this output, start without the "--fork"


这种一般要看配置文件指定的错误日志信息(很多可能,比如权限、比如文件限制、比如干脆就是配置文件中的指定路径不存在)。
我就碰到 配置文件中的指定路径不存在,导致我找到半天错误日志在哪里,发现没有,后面最终在配置文件里取消了 fork参数后,显示出来问题是日志文件路径不存在!(我目录建立的是log,参数文件里写的是logs..尴尬)
  

 

 

以上是关于MongoDB(2.2)MongoDB的安装与基本使用的主要内容,如果未能解决你的问题,请参考以下文章

解开MongoDB神秘的面纱

MongoDB数据库简介安装和基本使用

mongodb4.2.2 centos 单机安装

mongodb3.2安装与基本配置

MongoDB的安装与基本操作

MongoDB基本命令