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(在进程退出之前保存数据) (1)kill -2 `ps -ef|grep mongod|grep -v grep|awk '{print $2}'` (2)kill -2 pid (3)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"
这种一般要看配置文件指定的错误日志信息(很多可能,比如权限、比如文件限制、比如干脆就是配置文件中的指定路径不存在)。