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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一安装配置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. 首先下载并解压安装包

1
2
3
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)

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


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

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


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@DB ~] # mongod 
2017-11-14T13:14:19.809+0800 I JOURNAL  [initandlisten] journal  dir = /data/db/journal
2017-11-14T13:14:19.809+0800 I JOURNAL  [initandlisten] recover : no journal files present, no recovery needed
2017-11-14T13:14:19.815+0800 I JOURNAL  [durability] Durability thread started
2017-11-14T13:14:19.815+0800 I JOURNAL  [journal writer] Journal writer thread started
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] MongoDB starting : pid=4287 port=27017 dbpath= /data/db  64-bit host=DB
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] 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] db version v3.0.6
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] git version: 1ef45a23a4c5e3480ac919b28afcba3c615488f2
2017-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_49
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2017-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,可以输入简单的算术运算测试一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@DB mongodb] # mongo 
MongoDB shell version: 3.0.6
connecting to:  test
Server 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+2
5


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

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


三、mongodb启动命令参数说明

mongod的主要参数有:

 

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
68
69
70
71
72
73
74
--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/db
logpath= /usr/local/mongodb/logs/mongodb .log
logappend= true
port=27017
fork= true
auth= false
nohttpinterface= false
bind_ip=192.168.221.160
journal= true
quiet= true


 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@DB mongodb] # mongod -f /usr/local/mongodb/mongodb.conf 
about to fork child process, waiting  until  server is ready  for  connections.
forked process: 4319
child process started successfully, parent exiting
[root@DB mongodb] # ps -ef  |grep mongo
root       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.6
connecting to: 192.168.221.160 /test
Server 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主从的配置···



本文转自 青苗飞扬 51CTO博客,原文链接:http://blog.51cto.com/qingmiao/1981582

相关文章
|
9月前
|
存储 NoSQL 安全
客户说|知乎核心业务MongoDB集群的平滑上云迁移实践
客户说|知乎核心业务MongoDB集群的平滑上云迁移实践
301 0
|
12月前
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
946 5
|
存储 NoSQL 算法
MongoDB保姆级指南(中):从副本集群、分片集群起航,探索分布式存储的趋势!
本文一起来聊聊MongoDB集群,顺带以MongoDB集群为起点,共同探讨一下分布式存储的发展趋势~
2729 15
|
存储 监控 NoSQL
震撼!揭秘高可用 MongoDB 分片集群搭建的神秘魔法,开启数据存储的无敌模式!
【8月更文挑战第9天】在数字化时代,数据至关重要。MongoDB作为流行非关系型数据库,通过搭建高可用分片集群确保系统稳定性和性能。分片技术将大数据集分布于多服务器以实现水平扩展。搭建集群需准备服务器资源,配置环境,启动配置服务器、路由服务器及分片服务器,并设置分片策略。例如,对特定数据库和集合启用分片。此架构适用于高流量应用如大型电商平台,确保数据高效处理和高可用性。搭建过程需持续监控和优化,合理规划分片策略以维持系统稳定运行。
149 3
|
自然语言处理 运维 NoSQL
MongoDB集群同步
实现 MongoDB Cluster-to-Cluster 即集群同步的工具是:mongosync 详情可参考如下官方文档: https://www.mongodb.com/zh-cn/docs/cluster-to-cluster-sync/current/quickstart/ 以上这个地址的文档一看就是机器翻译的,可能有不恰当的地方,但基本可参考使用。 以下是本次在某项目地配置集群同步的简要步骤,可参考使用。
279 6
|
存储 运维 NoSQL
轻松上手:逐步搭建你的高可用MongoDB集群(分片)
【8月更文挑战第13天】在数据激增的背景下,传统单机数据库难以胜任。MongoDB作为流行NoSQL数据库,采用分片技术实现水平扩展,有效处理海量数据。分片将数据分散存储,提高并发处理能力和容错性,是高可用架构基石。构建MongoDB集群需理解shard、config server和router三组件协同工作原理。通过具体实例演示集群搭建流程,包括各组件的启动及配置,确保数据高可用性和系统稳定性。合理规划与实践可构建高效稳定的MongoDB集群,满足业务需求并支持未来扩展。
704 0
|
存储 负载均衡 NoSQL
MongoDB的架构设计基于三种集群模式
【6月更文挑战第5天】MongoDB的架构设计基于三种集群模式
614 3
|
4月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
4月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
363 79

推荐镜像

更多