加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 系统 > 正文

CentOS6.8安装mongodb3.0及备份脚本

发布时间:2023-10-21 15:43:40 所属栏目:系统 来源:
导读:一、系统环境

CentOS 6.8_x64

官方参考文档https://docs.mongodb.org/manual/reference/glossary/#term-init-script

二、添加官方yum库

#cd /etc/yum.repo.d/

#vim mongodb.repo

[mongodb-
一、系统环境
 
CentOS 6.8_x64
 
官方参考文档https://docs.mongodb.org/manual/reference/glossary/#term-init-script
 
二、添加官方yum库
 
#cd /etc/yum.repo.d/
 
#vim  mongodb.repo
 
[mongodb-org-3.0]
 
name=MongoDB Repository
 
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
 
gpgcheck=0
 
enabled=1
 
复制代码
 
三、安装配置
 
1、安装并创建数据目录
 
#yum install -y mongodb-org
 
#mkdir -p /Data/mongodb
 
#chown   mongod.mongod /Data/mongodb -R
 
复制代码
 
2、配置mongod.conf
 
#vim /etc/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/mongod.log    #需要自定义
 
# Where and how to store data.
 
storage:
 
  dbPath: /Data/mongodb/db           #需要自定义
 
  journal:
 
    enabled: true
 
#  engine:
 
#  mmapv1:
 
#  wiredTiger:
 
# how the process runs
 
processManagement:
 
  fork: true  # fork and run in background
 
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
 
# network interfaces
 
net:
 
  port: 27017
 
  bindIp: 10.1.0.7  # Listen to local interface only, comment to listen on all interfaces.    需要自定义
 
#security:
 
#operationProfiling:
 
#replication:
 
#sharding:
 
# Enterprise-Only Options
 
#auditLog:
 
复制代码
 
启动mongod
 
#service mongod start
 
四、测试
 
登录mongodb
 
#mongo --host 10.1.0.7
 
> db.version();
 
3.0.7
 
> show dbs
 
com_ylt_plat_passport  0.078GB
 
local                  0.078GB
 
chown mongod.mongod   /Data/mongodb -R
 
service  mongod start
 
五、排错
 
故障描述 :
 
service mongod stop 时发现 并没有 关闭mongod服务 进程依然在
 
通过排查发现问题出在/etc/mongod.conf中第24行
 
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
 
  把后面的# location of pidfile 删除掉  即可,这个是一个小bug
 
六、mogond备份与还原脚本
 
#cat mongodb_bak.sh
 
#!/bin/sh
 
DUMP=/usr/bin/mongodump
 
OUT_DIR=/data1/backup/mongodb/mongod_bak_now
 
BAK_DIR=/data1/backup/mongodb/mongod_bak_list
 
DATE=`date +%F_%H%M%d`
 
#DB_USER=username
 
#DB_PASS=
 
DAYS=7
 
TAR_BAK="mongodb_bak_$DATE.tar.gz"
 
[ -d $OUT_DIR ] || mkdir -v $OUT_DIR
 
[ -d $BAK_DIR ] || mkdir -v $BAK_DIR
 
BAK_DB(){
 
cd $OUT_DIR
 
rm -rf $OUT_DIR/*
 
mkdir -p $DATE
 
#$DUMP -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE
 
$DUMP -o $OUT_DIR/$DATE
 
tar czvf $BAK_DIR/$TAR_BAK $OUT_DIR/$DATE
 
find $BAK_DIR/ -mtime +$DAYS -delete
 
}
 
RESTORE_ALL(){
 
cd $OUT_DIR
 
for d in `ls`;
 
do
 
echo $OUT_DIR/$d
 
/usr/bin/mongorestore -d $OUT_DIR/$d
 
done
 
}
 
RESTORE_Choose(){
 
while true
 
do
 
  echo "when you choose 'quit|exit' exit to restore!"
 
  read -p "What's  your choose?(Enter continue!)" choose
 
  if [[ $choose == 'quit' || $choose == 'exit' ]]
 
  then
 
       echo "You choose exit!" && exit 2
 
  fi
 
  cd $OUT_DIR
 
  d=`ls`
 
  cd $OUT_DIR/$d
 
  ls
 
  read -p "What's db your choose?" whatdb
 
  if [ "$whatdb" != '' ];
 
    then
 
      /usr/bin/mongorestore -d $whatdb
 
  else
 
        echo "choose is empty,exit~" && exit 0
 
  fi
 
done
 
}
 
case $1 in
 
        back)
 
        BAK_DB
 
        ;;
 
        resall)
 
        RESTORE_ALL
 
        ;;
 
        resone)
 
        RESTORE_Choose
 
        ;;
 
        *)
 
        echo "USGE:back|resall|resone"
 
        ;;
 
esac
 
复制代码
 
使用说明:
 
back   备份全部的mongod数据库
 
resall  还原所有的数据库
 
resone可以指定还原某一个数据库
 
七、解决警告提示
 
 1、问题描述
 
解决登录mongo --host 10.1.0.7 --port 27017   类似如下提示
 
  ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.   和 ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
 
MongoDB shell version: 3.0.7
 
connecting to: 10.1.0.7:27017/test
 
Server has startup warnings:
 
2016-12-08T16:10:15.638+0800 I CONTROL  [initandlisten]
 
2016-12-08T16:10:15.638+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
 
2016-12-08T16:10:15.638+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
 
2016-12-08T16:10:15.638+0800 I CONTROL  [initandlisten]
 
2016-12-08T16:10:15.638+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
 
2016-12-08T16:10:15.638+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
 
2016-12-08T16:10:15.638+0800 I CONTROL  [initandlisten]
 
由于环境为CentOS6.8 所以解决方法如下,其他平台及版本请参考官方文档:https://docs.mongodb.org/manual/tutorial/transparent-huge-pages/
 
2、解决方法:
 
添加如下脚本
 
#vim /etc/init.d/disable-transparent-hugepages
 
#!/bin/sh### BEGIN INIT INFO
 
# Provides:          disable-transparent-hugepages
 
# Required-Start:    $local_fs
 
# Required-Stop:
 
# X-Start-Before:    mongod mongodb-mms-automation-agent
 
# Default-Start:     2 3 4 5
 
# Default-Stop:      0 1 6
 
# Short-Description: Disable Linux transparent huge pages
 
# Description:       Disable Linux transparent huge pages, to improve
 
#                    database performance.
 
### END INIT INFO
 
case $1 in
 
 start)    
 
    if [ -d /sys/kernel/mm/transparent_hugepage ]; then      
 
        thp_path=/sys/kernel/mm/transparent_hugepage    
 
    elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
 
        thp_path=/sys/kernel/mm/redhat_transparent_hugepage   
 
    else     
 
        return 0    
 
     fi     
 
        echo 'never' > ${thp_path}/enabled   
 
        echo 'never' > ${thp_path}/defrag    
 
        unset thp_path
 
    ;;
 
    esac
 
复制代码
 
添加到开机自启服务
 
#chmod +x /etc/init.d/disable-transparent-hugepages
 
#chkconfig --add disable-transparent-hugepages
 
复制代码
 
3、修改系统参数
 
#mkdir -p /etc/tune-profiles/no-thp
 
#cd /etc/tune-profiles/no-thp
 
#echo "set_transparent_hugepages never" > ktune.sh
 
#chmod +x ktune.sh
 
#tuned-adm profile no-thp 如果提示找不到命令请执行yum install tuned -y
 
复制代码
 
reboot 系统
 
4、验证:
 
$mongo --host 10.1.0.7 --port 27017
 
MongoDB shell version: 3.0.7
 
connecting to: 10.1.0.7:27017/test
 
>
 
5、出现如下错误:
 
** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.
 
#vim /etc/security/limits.conf
 
添加:
 
mongod soft nofile 64000
 
mongod hard nofile 64000
 
mongod soft nproc 32000
 
mongod hard nproc 32000
 
重启mongod
 
到此mongod安装完成~如有错误之处欢迎指正!
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章