千家信息网

高可用mongodb集群的学习记录(一安装配置MongoDB

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,一安装配置MongoDB一、概述NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的
千家信息网最后更新 2026年10月31日高可用mongodb集群的学习记录(一安装配置MongoDB

一安装配置MongoDB

一、概述

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。

NoSQL的优点

高可扩展性 可以横向扩展也可以纵向扩展

分布式计算

低成本高性能

架构的灵活性,半结构化数据

没有复杂的关系

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。所以这个非常方便,我们可以用sql操作MongoDB,从关系型数据库迁移过来,开发人员学习成本会大大减少。如果再对底层的sql API做一层封装,开发基本可以感觉不到mongodb和关系型数据库的区别。同样MongoDB也是号称自己能够快速搭建一个高可用可扩展的的分布式集群

二、安装配置与应用

MongoDB可以在windows上安装使用,同样支持linux平台。我这里选的是linux平台安装。

1. 首先下载并解压安装包

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz    # 下载tar  -zxvf mongodb-linux-x86_64-3.0.6.tgz                  # 解压mv  mongodb-linux-x86_64-3.0.6/  /usr/local/mongodb            # 将解压包拷贝到指定目录


把MongoDB的可执行文件路径加到PATH变量中(~/.bash_profile)

PATH=$PATH:$HOME/bin:/usr/local/mongodb/bin


2. 创建所mongodb启动需要的路径和文件

mkdir /data/db #创建存放mongodb的数据文件夹mkdir /usr/local/mongodb/logs/ #创建存放mongodb日志的文件夹touch /usr/local/mongodb/logs/mongodb.log #创建存放mongodb的日志文件


3. 启动mongodb服务。命令窗口直接执行就行

[root@DB ~]# mongod 2017-11-14T13:14:19.809+0800 I JOURNAL  [initandlisten] journal dir=/data/db/journal2017-11-14T13:14:19.809+0800 I JOURNAL  [initandlisten] recover : no journal files present, no recovery needed2017-11-14T13:14:19.815+0800 I JOURNAL  [durability] Durability thread started2017-11-14T13:14:19.815+0800 I JOURNAL  [journal writer] Journal writer thread started2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] MongoDB starting : pid=4287 port=27017 dbpath=/data/db 64-bit host=DB2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 16384 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files.2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] db version v3.0.62017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] git version: 1ef45a23a4c5e3480ac919b28afcba3c615488f22017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] build info: Linux build6.ny.cbi.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_492017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] allocator: tcmalloc2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] options: {}2017-11-14T13:14:19.849+0800 I NETWORK  [initandlisten] waiting for connections on port 27017


可以看到mongodb服务进程以及启动,开启了27017端口等待连接了

另开一个命令窗口,使用mongo命令可以与mongodb进行交互。由于它是一个JavaScript Shell,可以输入简单的算术运算测试一下:

[root@DB mongodb]# mongo MongoDB shell version: 3.0.6connecting to: testServer has startup warnings: 2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 16384 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files.2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] > 3+25


也可以插入一些简单数据,查询验证:

> db.a.insert({a:1})WriteResult({ "nInserted" : 1 })> db.a.find(){ "_id" : ObjectId("5a0a7fa7766decd974b3ad3f"), "a" : 1 }>


三、mongodb启动命令参数说明

mongod的主要参数有:

--quiet# 安静输出--port arg# 指定服务端口号,默认端口27017--bind_ip arg# 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP--logpath arg# 指定MongoDB日志文件,注意是指定文件不是目录--logappend# 使用追加的方式写日志--pidfilepath arg# PID File 的完整路径,如果没有设置,则没有PID文件--keyFile arg# 集群的私钥的完整路径,只对于Replica Set 架构有效--unixSocketPrefix arg# UNIX域套接字替代目录,(默认为 /tmp)--fork# 以守护进程的方式运行MongoDB,创建服务器进程--auth# 启用验证--cpu# 定期显示CPU的CPU利用率和iowait--dbpath arg# 指定数据库路径--diaglog arg# diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads--directoryperdb# 设置每个数据库将被保存在一个单独的目录--journal# 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里--journalOptions arg# 启用日志诊断选项--ipv6# 启用IPv6选项--jsonp# 允许JSONP形式通过HTTP访问(有安全影响)--maxConns arg# 最大同时连接数 默认2000--noauth# 不启用验证--nohttpinterface# 关闭http接口,默认关闭27018端口访问--noprealloc# 禁用数据文件预分配(往往影响性能)--noscripting# 禁用脚本引擎--notablescan# 不允许表扫描--nounixsocket# 禁用Unix套接字监听--nssize arg (=16)# 设置信数据库.ns文件大小(MB)--objcheck# 在收到客户数据,检查的有效性,--profile arg# 档案参数 0=off 1=slow, 2=all--quota# 限制每个数据库的文件数,设置默认为8--quotaFiles arg# number of files allower per db, requires --quota--rest# 开启简单的rest API--repair# 修复所有数据库run repair on all dbs--repairpath arg# 修复库生成的文件的目录,默认为目录名称dbpath--slowms arg (=100)# value of slow for profile and console log--smallfiles# 使用较小的默认文件--syncdelay arg (=60)# 数据写入磁盘的时间秒数(0=never,不推荐)--sysinfo# 打印一些诊断系统信息--upgrade# 如果需要升级数据库  * Replicaton 参数 -------------------------------------------------------------------------------- --fastsync# 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步--autoresync# 如果从库与主库同步数据差得多,自动重新同步,--oplogSize arg# 设置oplog的大小(MB)  * 主/从参数 -------------------------------------------------------------------------------- --master# 主库模式--slave# 从库模式--source arg# 从库 端口号--only arg# 指定单一的数据库复制--slavedelay arg# 设置从库同步主库的延迟时间  * Replica set(副本集)选项: -------------------------------------------------------------------------------- --replSet arg# 设置副本集名称  * Sharding(分片)选项 ----------------------------------------------------------------------------------configsvr# 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb--shardsvr# 声明这是一个集群的分片,默认端口27018--noMoveParanoia# 关闭偏执为moveChunk数据保存 可以把上述参数都写进mongodb.conf配置文件里:[root@DB mongodb]# cat mongodb.conf dbpath=/data/dblogpath=/usr/local/mongodb/logs/mongodb.loglogappend=trueport=27017fork=trueauth=falsenohttpinterface=falsebind_ip=192.168.221.160journal=truequiet=true


启动的时候使用-f参数引用这个位置即可

[root@DB mongodb]# mongod -f /usr/local/mongodb/mongodb.conf about to fork child process, waiting until server is ready for connections.forked process: 4319child process started successfully, parent exiting[root@DB mongodb]# ps -ef  |grep mongoroot       4319      1  1 13:36 ?        00:00:00 mongod -f /usr/local/mongodb/mongodb.conf[root@DB mongodb]# mongo 192.168.221.160 MongoDB shell version: 3.0.6connecting to: 192.168.221.160/testServer has startup warnings: 2017-11-14T13:36:25.213+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.2017-11-14T13:36:25.213+0800 I CONTROL  [initandlisten] 2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] 2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] 2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] 2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 16384 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files.2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] > db.a.find(){ "_id" : ObjectId("5a0a7fa7766decd974b3ad3f"), "a" : 1 }>


我们都知道,这种单实例的配置只适合学习开发时使用,生产肯定不会这么使用,不然单节点挂掉整条数据流全丢了

接下来一篇我们继续学习mongodb主从的配置···


数据 数据库 文件 参数 日志 目录 服务 配置 用户 端口 路径 集群 命令 同步 存储 学习 分布式 平台 文件夹 模式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技园 奇酷互联网络科技 新华互联网科技校企合作 博兴的互联网电子科技公司 互联网实体化科技化 互联网之后的科技是什么 阿里巴巴算科技企业还是互联网 湖南诚度互联网科技有限公司 上海宁丞科技互联网 和信科技工业互联网 互联网科技大奖都有哪些公司 翼展科技 首家互联网医院 工业互联网展湾科技股份有限公司 滨湖区互联网智能科技产品有哪些 每天都有哪些好的互联网科技 宁波跨境商互联网科技有限公司 陕西九四连强互联网科技有限公司 易租星互联网科技有限公司 每日互联网科技新闻 颐高云石互联网科技 互联网与科技 广州大一互联网络科技有限公司 科技互联网龙头 深圳期待互联网科技 华中科技有哪些互联网大佬 互联网5g黑科技有哪些 互联网科技资金流入 浙南科技城互联网大厦招聘 信承诺互联网科技有限公司 中国互联网公司的科技投入
0