mongodb服务管理

背景

常用命令总结

写在前面
原文https://www.cnblogs.com/keme/p/11004955.html
link

软件安装
tar zxvf mongodb-linux-x86_64-3.4.20.tgz -C /usr/local/mongodb

ln -s mongodb-linux-x86_64-3.4.20/ mongodb
为什么做软链接了,以后后续版本做升级

mkdir -p /data/mongodb
mkdir -p /opt/mongodb/{conf,logs,pid}

配置文件
mongodb.conf 配置文件是yaml
systemLog:
   destination: file #Mongodb 日志输出的目的地,指定一个 file 或者 syslog,如果指定 file,必须指定systemlog.path
   logAppend: true #当实例重启时,不创建新的日志文件,在老的日志文件末尾继续添加
   path: /opt/mongodb/logs/mongodb.log #日志路径
storage:
   dbPath: /data/mongodb #数据存储目录
   journal: #回滚日志
      enabled: true
   directoryPerDB: true #默认 false,不适用 inmemory engine
   wiredTiger:
      engineConfig:
         cacheSizeGB: 1 #将用于所有数据缓存的最大小
         directoryForIndexes: true #默认 false 索引集合 storage.dbPath 存储在数据单独子目录
processManagement: #使用处理系统守护进程的控制处理
   fork: true # fork and run in background 后台运行
   pidFilePath: /opt/mongodb/pid/mongod.pid # location of pidfile 创建 pid 文件
net:
   port: 27017 #监听端口
   bindIp: 127.0.0.1,10.0.0.160 #绑定 ip
#replication:
# oplogSizeMB: 1024 #复制操作日志的大小
# replSetName: xxx #副本集名称,同一个副本集的所有主机必须设置相同的名称

管理 mongo

启动
/opt/mongodb/bin/mongod -f /opt/mongodb/conf/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 14662
child process started successfully, parent exiting

 ps aux | grep mongo
 netstat -ntulp | grep mongo

关闭mongo
/opt/mongodb/bin/mongod -f /opt/mongodb/conf/mongodb.conf --shutdown

注意一下: 尽量少用kill -9
如果用kill 建议用
shell> kill -2 PID
  原理:-2表示向mongod进程发送SIGINT信号。这是终端等同于ctrl+c

shell> kill -4 PID
  原理:-4表示向mognod进程发送SIGTERM信号。
mongod进程收到SIGINT信号或者SIGTERM信号,会做一些处理
关闭所有打开的连接
将内存数据强制刷新到磁盘
当前的操作执行完毕
安全停止
  切忌kill -9

写入环境变量
echo 'PATH=$PATH:/opt/mongodb/bin' >> /etc/profile
source /etc/profile

mongo 终端停止服务

use admin
db.shutdownServer()

注意,关闭命令建议使用 mongo 内置的 db.shutdownServer()命令 使用这条命令的前提是必须使用 localhost 登陆mongo,否则会提示报错 mongo localhost:27017

日志信息
** WARNING: Access control is not enabled for the database.
**          Read and write access to data and configuration is unrestricted.
对数据库来说访问控制是没有开启的,读取和写入数据和配置是不受限制的。需要我们创建个用户,
开启认证。
 
** WARNING: You are running this process as the root user, which is not recommended.
不推荐以root用户来运行mongo
 
** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
**        We suggest setting it to 'never'
** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
**        We suggest setting it to 'never'
自CentOS6版本开始引入了Transparent Huge Pages(THP),从CentOS7版本开始,
该特性默认就会启用。
尽管THP的本意是为提升内存的性能,不过某些数据库厂商还是建议直接关闭THP
(比如说Oracle、MariaDB、 MongoDB等),透明的Huge Pages可能会在运行时引起内存分配延迟。

查看THP的启动状态:
[root@mongo-160 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[root@mongo-160 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never

在这里插入图片描述
透明的大页(THP)是一种Linux内存管理系统,它可以减少机器w上的翻译后备缓冲区(TLB)查找的开销
always - always use THP never - disable THP

We suggest setting it to 'never' #mongo 建议关闭

运行以下命令即时禁用THP(不用重启操作系统)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

[root@mongo-160 ~]# chmod +x /etc/rc.d/rc.local
[root@mongo-160 ~]# vim /etc/rc.d/rc.local
#添加如下两行内容
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
 
[root@mongo-160 ~]# tail -n 2 /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

需要重启系统的 修改

1.设置/etc/grub.conf文件,在系统启动是禁用。
 vi /etc/grub.conf
 添加
 transparent_hugepage=never
 
2.设置/etc/rc.local文件
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
fi
小知识点:

1:从RedHat 6, OEL 6, SLES 11 and UEK2 kernels 开始,
系统缺省会启用 Transparent HugePages :用来提高内存管理的性能透明大页(Transparent HugePages )
和之前版本中的大页功能上类似。主要的区别是:Transparent HugePages 可以实时配置,
不需要重启才能生效配置;

2:Transparent Huge Pages在32位的RHEL 6中是不支持的。
Transparent Huge Pages are not available on the 32-bit version of RHEL 6.

3: ORACLE官方不建议我们使用RedHat 6, OEL 6, SLES 11 and UEK2 kernels 时的开启透明大页
(Transparent HugePages ), 因为透明大页(Transparent HugePages ) 存在一些问题:
1.在RAC环境下 透明大页(Transparent HugePages )会导致异常节点重启,和性能问题;
2.在单机环境中,透明大页(Transparent HugePages ) 也会导致一些异常的性能问题;

本文说明,主要技术内容来自互联网技术大佬的分享,还有一些自我的加工(仅仅起到注释说明的作用)。如有相关疑问,请留言,将确认之后,执行侵权必删

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值