未加星标

mongodb常见操作及集群搭建

字体大小 | |
[数据库(综合) 所属分类 数据库(综合) | 发布者 店小二05 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏
简介

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

特点

高性能、易部署、易使用,存储数据非常方便。

功能特性

面向集合存储,易存储对象类型的数据 模式自由 支持动态查询 支持完全索引,包含内部对象 支持查询 支持复制和故障恢复 使用高效的二进制数据存储,包括大型对象(如视频等) 自动处理碎片,以支持云计算层次的扩展性 支持RUBY,python,JAVA,C++php等多种语言 文件存储格式为BSON(一种JSON的扩展) 可通过网络访问
基本操作
安装
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

添加到 PATH 路径中:

export PATH=/usr/local/mongodb/bin:$PATH
参数说明

基本配置

--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数据保存

上述参数都可以写入 mongod.conf 配置文档里例如:

dbpath = /data/mongodb
logpath = /data/mongodb/mongodb.log
logappend = true
port = 27017
fork = true
auth = true
启动方式

命令行

mongod --dbpath /data/mongodbtest/single/data/

配置文件

mongod -f mongodb.conf

说明:这两种方式都是前台启动mongodb进程,如果session窗口关闭,则mongodb进程也随之关闭。而mongdb还有一种后台Daemon方式启动,只需要添加”–fork”参数即可。值得注意的是,用到了”–fork”参数就必须启用”–logpath”参数。

mongod --dbpath=/data/mongodbtest/single/data --fork --logpath=/data/mongodbtest/single/mongodb.log
mongodb常见操作及集群搭建
vcq9xvS2r7XEZm9ya7LOyv3Ssr/J0tTF5NbDxeTWw87EvP5tb25nb2RiLmNvbmbW0KOsxNrI3cjnz8LL+cq+OjwvcD4NCjxwcmUgY2xhc3M9"brush:sql;">
port=27017
dbpath=/data/mongodbtest/single/
logpath=/data/mongodbtest/single/mongodb.log
logappend=true
fork=true
关闭

在后台运行,如果想要关闭它的话,需要给他发送shutdownServer()。


mongodb常见操作及集群搭建
搭建
单实例模式

说明:这种配置只是适合开发,生产不适用,因为单个节点挂掉,整个业务中断。


mongodb常见操作及集群搭建

建立mongodb测试文件夹

#存放整个mongodb文件
mkdir -p /data/mongodbtest/single
#存放mongodb数据文件
mkdir -p /data/mongodbtest/single/data
#进入mongodb文件夹
cd /data/mongodbtest/single

启动单实例

mongod --dbpath /data/mongodbtest/single/data --fork --logpath=/data/mongodbtest/single/mongodb.log
mongodb常见操作及集群搭建

mongodb默认自带了web访问接口:http://192.168.1.103:28017


mongodb常见操作及集群搭建
副本集模式

说明:mongodb官方已经不建议使用主从模式,替换方案采用副本集模式。

主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性。而副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本存在,并且解决了上面第一个问题“主节点挂掉了,整个集群内会自动切换”。

mongodb副本集的设计图:


mongodb常见操作及集群搭建

由图可以看到客户端连接到整个副本集,不关心具体哪一台机器是否挂掉。主服务器负责整个副本集的读写,副本集定期同步数据备份,一但主节点挂掉,副本节点就会选举一个新的主服务器,这一切对于应用服务器不需要关心。

我们看一下主服务器挂掉后的设计图:


mongodb常见操作及集群搭建

配置步骤

准备三台机子:192.168.1.103 192.168.1.131 192.168.1.140

其中192.168.1.103作为主节点 192.168.1.131 192.168.1.140作为副本节点。

分别在每台机子建立mongodb的文件夹

#存放整个mongodb文件
mkdir -p /data/mongodb/replset
#存放mongodb数据文件
mkdir -p /data/mongodb/replset/data

在每台机器上启动mongodb

命令行启动

mongod --dbpath /data/mongodb/replset/data --replSet repset --fork --logpath=/data/mongodb/mongodb.log

配置文件mongodb.conf启动

dbpath=/data/mongodb/replset/data
logpath=/data/mongodb/mongodb.log
logappend=true
fork=true
journal=true
oplogSize=2048
smallfiles=true
replSet=repset

启动命令:mongod -f mongodb.conf


mongodb常见操作及集群搭建

初始化副本集

在三台机器上任意一台机器登陆mongodb;打开mongo终端。

use admin
config = { _id:"repset",members:[{_id:0,host:"192.168.1.103:27017"},{_id:1,host:"192.168.1.131:27017"},{_id:2,host:"192.168.1.140:27017"}]}
rs.initiate(config);
rs.status(); #查看集群节点的状态

结果说明

“health” : 1, #代表机器正常
“stteStr” : “PRIMARY”, #代表是主节点,可读写,其中有以下几下状态:
STARTUP:刚加入到复制集中,配置还未加载
STARTUP2:配置已加载完,初始化状态
RECOVERING:正在恢复,不适用读
ARBITER: 仲裁者
DOWN:节点不可到达
UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构,脑裂
REMOVED:移除复制集
ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态
FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新做同步
PRIMARY:主节点
SECONDARY:备份节点
mongodb常见操作及集群搭建

测试副本集数据复制功能

在主节点192.168.1.131 上连接到终端:

mongo 127.0.0.1

建立test 数据库

use test

往testdb表插入数据

db.testdb.insert({"name":"zhangsan"})
mongodb常见操作及集群搭建

在副本节点 192.168.1.103、192.168.1.140 上连接到mongodb查看数据是否复制过来。

mongo 192.168.1.103:27017

使用test 数据库。

repset:SECONDARY> use test;
repset:SECONDARY> show tables;

mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读。

repset:SECONDARY> db.getMongo().setSlaveOk();

可以看到数据已经复制到了副本集。

repset:SECONDARY> db.testdb.find();
mongodb常见操作及集群搭建

测试副本集故障转移功能

先停掉主节点131,查看103、140的选票结果。


mongodb常见操作及集群搭建

在140节点查看


mongodb常见操作及集群搭建

再重新启动节点131


mongodb常见操作及集群搭建

本文数据库(综合)相关术语:系统安全软件

分页:12
转载请注明
本文标题:mongodb常见操作及集群搭建
本站链接:http://www.codesec.net/view/480254.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(46)