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
目录
相关文章
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
123 3
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
116 2
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
178 2
|
3月前
|
Linux 知识图谱
Centos7安装killall,fuser, killall,pstree和pstree.x11
通过上述步骤,您已在CentOS 7系统中成功部署了killall、fuser、pstree以及pstree.x11,为高效管理系统进程打下了坚实基础。更多关于服务器管理与优化的知识,获取全面技术支持与解决方案。
100 1
|
3月前
|
监控 安全 Linux
CentOS7下安装配置ntp服务的方法教程
通过以上步骤,您不仅能在CentOS 7系统中成功部署NTP服务,还能确保其配置合理、运行稳定,为系统时间的精确性提供保障。欲了解更多高级配置或遇到特定问题,提供了丰富的服务器管理和优化资源,可作为进一步学习和求助的平台。
221 1
|
2月前
|
存储 安全 Linux
VMware安装CentOS7
【11月更文挑战第11天】本文详细介绍了在 VMware 中安装 CentOS 7 的步骤,包括准备工作、创建虚拟机、配置虚拟机硬件和安装 CentOS 7。具体步骤涵盖下载 CentOS 7 镜像文件、安装 VMware 软件、创建和配置虚拟机硬件、启动虚拟机并进行安装设置,最终完成 CentOS 7 的安装。在安装过程中,需注意合理设置磁盘分区、软件选择和网络配置,以确保系统的性能和功能满足需求。
245 0
|
2月前
|
存储 NoSQL 网络协议
【赵渝强老师】MongoDB的安装与访问
本文介绍了在Linux系统上安装和部署MongoDB的详细步骤,包括安装依赖包、解压安装包、配置环境变量、创建数据目录及启动服务等。文中还提供了相关命令示例和注意事项,帮助用户顺利完成MongoDB的安装与配置。