MongoDB源码安装
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功
系统:CentOS-7.5
软件:MongoDB-3.6.10
地址:10.0.0.20
创建工作目录:
mkdir /home/tools && cd /home/tools
下载MongoDB软件包:
wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.10.tgz
永久关闭大页内存:
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
调整系统打开文件数:
#系统最大打开文件句柄疏数量
echo "* - nofile 65535" >> /etc/security/limits.conf
#系统最大打开进程数量,默认4096
echo "* - noproc 65535" >> /etc/security/limits.conf
创建用户:(官方建议用普通用户管理MongoDB)
groupadd -g 800 mongod && useradd -u 800 -g mongod mongod
创建mongodb目录:
mkdir -p /mongodb/{bin,conf,log,data}
解压软件并拷贝文件:
tar xf mongodb-linux-x86_64-rhel70-3.6.10.tgz
cp mongodb-linux-x86_64-rhel70-3.6.10/bin/* /mongodb/bin
chown -R mongod.mongod /mongodb/
添加环境变量:
su - mongod
加入以下环境变量:
vim ~/.bash_profile
export PATH=/mongodb/bin:$PATH
source ~/.bash_profile
启动MongoDB:
mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --fork
参数解释#指定MongoDB数据目录 --dbpath=/mongodb/data #指定MongoDB日志存放位置 --logpath=/mongodb/log/mongodb.log #指定MongoDB监听端口 --port=27017 #指定日志为追加形式记录(默认是覆盖重定向) --logappend #后台运行MongoDB --fork
连接MongoDB:
mongo(连接会有警告,只打开了文件数,进程数太低)
MongoDB shell version v3.6.10
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b8c9c6ed-a125-44b0-b572-a19916e967d7") }
MongoDB server version: 3.6.10
Server has startup warnings:
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten]
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten]
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten]
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten]
2019-02-25T04:54:38.479+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
#退出连接
exit
关闭MongoDB:
mongod -f /mongodb/conf/mongodb.conf --shutdown
添加MongoDB配置文件:
vim /mongodb/conf/mongodb.conf
systemLog:
destination: file
path: "/mongodb/log/mongodb.log"
logAppend: true
storage:
journal:
enabled: true
dbPath: "/mongodb/data"
processManagement:
fork: true
net:
bindIp: 10.0.0.20
port: 27017
关闭MongoDB:
mongod -f /mongodb/conf/mongodb.conf --shutdown
配置systemd管理:
vim /lib/systemd/system/mongodb.service
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
User=mongod
Type=forking
ExecStart=/mongodb/bin/mongod -f /mongodb/conf/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/mongodb/bin/mongod -f /mongodb/conf/mongodb.conf --shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启动:
systemctl daemon-reload
systemctl start mongodb.service
systemctl enable mongodb.service