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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

一、系统环境
CentOS 6.8_x64
官方参考文档https://docs.mongodb.org/manual/reference/glossary/#term-init-script

二、添加官方yum库
#cd /etc/yum.repo.d/
#vim  mongodb.repo

1
2
3
4
5
[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、安装并创建数据目录

1
2
3
#yum install -y mongodb-org
#mkdir -p /Data/mongodb 
#chown   mongod.mongod /Data/mongodb -R


2、配置mongod.conf
#vim /etc/mongod.conf 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/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  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  - "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  - "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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/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

添加到开机自启服务

1
2
#chmod +x /etc/init.d/disable-transparent-hugepages
#chkconfig --add disable-transparent-hugepages


3、修改系统参数

1
2
3
4
5
#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安装完成~如有错误之处欢迎指正!










本文转自 dyc2005 51CTO博客,原文链接:http://blog.51cto.com/dyc2005/1942438,如需转载请自行联系原作者
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
3月前
|
NoSQL MongoDB 数据库
MongoDB备份与恢复总结
MongoDB备份与恢复总结
122 0
|
24天前
|
NoSQL MongoDB 数据库
|
1月前
|
NoSQL Ubuntu Linux
Linux平台安装MongoDB
10月更文挑战第11天
31 5
|
1月前
|
NoSQL Shell MongoDB
Mac OSX 平台安装 MongoDB
10月更文挑战第11天
20 4
|
7天前
|
存储 NoSQL 网络协议
【赵渝强老师】MongoDB的安装与访问
本文介绍了在Linux系统上安装和部署MongoDB的详细步骤,包括安装依赖包、解压安装包、配置环境变量、创建数据目录及启动服务等。文中还提供了相关命令示例和注意事项,帮助用户顺利完成MongoDB的安装与配置。
|
1月前
|
NoSQL Shell MongoDB
Windows 平台安装 MongoDB
10月更文挑战第10天
39 0
Windows 平台安装 MongoDB
|
1月前
|
存储 NoSQL MongoDB
docker安装Mongodb
这篇文章详细说明了如何使用Docker安装MongoDB,包括拉取镜像、创建并运行容器、数据持久化存储以及访问容器内的MongoDB服务的具体步骤。
101 1
|
3月前
|
JavaScript NoSQL 前端开发
|
3月前
|
NoSQL 网络安全 MongoDB
MongoDB 备份与恢复
MongoDB 中的数据备份和恢复主要依赖于 `mongodump` 和 `mongorestore` 两个命令。`mongodump` 用于备份数据,它可以将数据导出为 BSON 格式的文件,支持多种部署类型,包括独立运行部署、副本集、分片集群等。通过指定不同的参数,如 `--uri`、`--host`、`--port` 等,可以连接到不同的 MongoDB 实例。备份时还可以指定要备份的数据库、集合等。
41 1
|
3月前
|
NoSQL 安全 MongoDB
用python安装mongodb
用python安装mongodb
28 0