mongDB主从
MongoDB【第二篇】MongodDB主从
官方网站:
http://www.mongodb.org/
MongoDB的一些参数
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 命令行参数(与--master一同使用)配置用于存储给从节点可用的更新信息占用的磁盘空间(M为单位),如果不指定这个参数,默认大小为当前可用磁盘空间的5%(64位机器最小值为1G,32位机器为50M)。
--logappend 日志文件末尾添加
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)
-h [ --help ] show this usage information
--version show version information
-f [ --config ] arg configuration file specifying additional options
--port arg specify port number 指定端口号
--bind_ip arg local ip address to bind listener - all local ips
bound by default
-v [ --verbose ] be more verbose (include multiple times for more
verbosity e.g. -vvvvv)
--dbpath arg (=/data/db/) directory for datafiles 指定数据存放目录
--quiet quieter output 静默模式
--logpath arg file to send all output to instead of stdout 指定日志存放目录 --logappend appnd to logpath instead of over-writing 指定日志是以追加还是以覆盖的方式写入日志文件 --fork fork server process 以创建子进程的方式运行
--cpu periodically show cpu and iowait utilization 周期性的显示cpu和io的使用情况
--noauth run without security 无认证模式运行
--auth run with security 认证模式运行
--objcheck inspect client data for validity on receipt 检查客户端输入数据的有效性检查
--quota enable db quota management 开始数据库配额的管理
--quotaFiles arg number of files allower per db, requires --quota 规定每个数据库允许的文件数
--appsrvpath arg root directory for the babble app server
--nocursors diagnostic/debugging option 调试诊断选项
--nohints ignore query hints 忽略查询命中率
--nohttpinterface disable http interface 关闭http接口,默认是28017
--noscripting disable scripting engine 关闭脚本引擎
--noprealloc disable data file preallocation 关闭数据库文件大小预分配
--smallfiles use a smaller default file size 使用较小的默认文件大小
--nssize arg (=) .ns file size (in MB) for new databases 新数据库ns文件的默认大小
--diaglog arg =off =W =R =both =W+some reads 提供的方式,是只读,只写,还是读写都行,还是主要写+部分的读模式
--sysinfo print some diagnostic system information 打印系统诊断信息
--upgrade upgrade db if needed 如果需要就更新数据库
--repair run repair on all dbs 修复所有的数据库
--notablescan do not allow table scans 不运行表扫描
--syncdelay arg (=) seconds between disk syncs ( for never) 系统同步刷新磁盘的时间,默认是60s
Replication options:
--master master mode 主复制模式
--slave slave mode 从复制模式
--source arg when slave: specify master as <server:port> 当为从时,指定主的地址和端口
--only arg when slave: specify a single database to replicate 当为从时,指定需要从主复制的单一库
--pairwith arg address of server to pair with
--arbiter arg address of arbiter server 仲裁服务器,在主主中和pair中用到
--autoresync automatically resync if slave data is stale 自动同步从的数据
--oplogSize arg size limit (in MB) for op log 指定操作日志的大小
--opIdMem arg size limit (in bytes) for in memory storage of op ids指定存储操作日志的内存大小
Sharding options:
--configsvr declare this is a config db of a cluster 指定shard中的配置服务器
--shardsvr declare this is a shard db of a cluster 指定shard服务器
60 --diaglog:创建一个非常详细的故障排除和各种错误的诊断日志记录。默认0。设置为1,为在dbpath目录里生成一个diaglog.开头的日志文件,他的值如下:
例子:diaglog:
1.Value    Setting2.0    off. No logging.       #关闭。没有记录。3.1    Log write operations.  #写操作4.2    Log read operations.   #读操作5.3    Log both read and write operations. #读写操作6.7    Log write and some read operations. #写和一些读操作MongoDB 安裝,主从配置
一 MongoDB 安装
[root@zabbix_server src]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz
[root@zabbix_server src]# tar xzvf mongodb-linux-x86_64-2.0..tgz
[root@zabbix_server src]# mv mongodb-linux-x86_64-2.0. /usr/local/mongodb [root@zabbix_server src]# mkdir /usr/local/mongodb/data
[root@zabbix_server src]# touch /usr/local/mongodb/logs [root@zabbix_server bin]# /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port= --fork [root@zabbix_server bin]# ./mongo
MongoDB shell version: 2.0.
connecting to: test
> use test;
switched to db test
> exit
bye [root@zabbix_server bin]# netstat -anlpt | grep mongo
tcp 0.0.0.0: 0.0.0.0:* LISTEN /mongod
tcp 0.0.0.0: 0.0.0.0:* LISTEN /mongod
注意:
如果报错
-bash: /usr/local/mongodb/bin/mongod: cannot execute binary file
说明你的服务器和mongodb 的版本不对应, 如果服务器是64位,下载x86_64的mongodb ,如果服务器是32位的, 下载i686的mongodb/
二 MongoDB 主从配置
1)实验环境
主:192.168.0.14
从:192.168.0.64
2)时间同步
两台机器做时间同步
[root@zabbix_server src]# ntpdate time.windows.com
3)启动服务:方法一
master:192.168.0.14
启动命令
/usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
slave:192.168.0.64
启动命令
/usr/local/mongodb/bin/mongod --slave --source 192.168.0.14:27017 --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
方法二(将启动方法写成配置文件的形式)
vi mongod.conf(主库的配置文件)
port=27017
dbpath=/usr/local/mongodb01/db
logpath=/usr/local/mongodb01/logs/mongodb.log
logappend=true 
journal=true
fork = true  
master = true
vi mongod.conf(从库的配置文件)                                                                 
port=27017                                                                                                
dbpath=/usr/local/mongodb02/db                                                                      
logpath=/usr/local/mongodb02/logs/mongodb.log                                                               
logappend=true                                                                                           
journal=true                                                                                                
fork = true                                                                                                                                                                                                 
source = 10.143.79.16:27017
./bin/mongd -f mongod.conf 执行后mongo启动
4)测试主从
在主上插入数据
测试1:
测试1:
在主库上插入数据
[root@cacti bin]# ./mongo
MongoDB shell version: 2.0.
connecting to: test
> db.foo.save({"id":,"name":'lizonggang'})
> db.foo.find({"id":})
{ "_id" : ObjectId("51c3f4b21399022afd992f39"), "id" : , "name" : "lizonggang" }
> 在从上查看数据(已有在主上插入的数据,说明主从成功)
[root@zabbix_server bin]# ./mongo
MongoDB shell version: 2.0.
connecting to: test
> db.foo.find({"id":})
{ "_id" : ObjectId("51c3f4b21399022afd992f39"), "id" : , "name" : "lizonggang" }
>
进行数据同步是可能出现错误
Error: error: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } 此错误是当主库插完数据后,在从库查询的时候出现的
MongoDb的“not master and slaveok=false”错误及解决方法
解决方法:1.在从进库输入>rs.slaveOk();进行强制同步(不推荐)
2.在主库上设置 slaveok=ok
[mongodb@ligh bin]$ mongo 127.0.0.1:33333
测试2:
在主库上入数据
> use elaindb
switched to db elaindb
> db.test.save({title:"This is a test!"})
> db.test.find();
{ "_id" : ObjectId("51c3f8f11a90c8da157c7f64"), "title" : "This is a test!" }
> 在从库上验证数据
[root@zabbix_server bin]# ./mongo
MongoDB shell version: 2.0.
connecting to: test
> use elaindb
switched to db elaindb
> db.test.find();
{ "_id" : ObjectId("51c3f8f11a90c8da157c7f64"), "title" : "This is a test!" }
> db.printReplicationInfo();
this is a slave, printing slave replication info.
source: 192.168.0.14:
syncedTo: Fri Jun :: GMT+ (CST)
= secs ago (0hrs)
>
> db.printSlaveReplicationInfo();
source: 192.168.0.14:
syncedTo: Fri Jun :: GMT+ (CST)
= secs ago (0hrs)
>
测试3:
在这个状态下,slave 下是不可以插入数据的
> db.test.save({title:"This is slave test!"})
not master
5) 一些查询状态的语句
1)查询库
> show dbs;
elaindb .0625GB
local .125GB
test .0625GB
2)在从库上查询主库的地址
> use local;
switched to db local
> db.sources.find()
{ "_id" : ObjectId("51c3f5dd568d10529950b10d"), "host" : "192.168.0.14:27017", "source" : "main", "syncedTo" : { "t" : , "i" : } }
>
3)查看主从复制状态
> db.printReplicationInfo();
configured oplog size: .6837158203125MB
log length start to end: 1375secs (.38hrs)
oplog first event time: Fri Jun :: GMT+ (CST)
oplog last event time: Fri Jun :: GMT+ (CST)
now: Fri Jun :: GMT+ (CST)
>
4)查看Collection状态
> db.printCollectionStats();
foo
{
"ns" : "test.foo",
"count" : ,
"size" : ,
"avgObjSize" : ,
"storageSize" : ,
"numExtents" : ,
"nindexes" : ,
"lastExtentSize" : ,
"paddingFactor" : ,
"flags" : ,
"totalIndexSize" : ,
"indexSizes" : {
"_id_" :
},
"ok" :
}
---
system.indexes
{
"ns" : "test.system.indexes",
"count" : ,
"size" : ,
"avgObjSize" : ,
"storageSize" : ,
"numExtents" : ,
"nindexes" : ,
"lastExtentSize" : ,
"paddingFactor" : ,
"flags" : ,
"totalIndexSize" : ,
"indexSizes" : { },
"ok" :
}
---
>
6)应急 
如果在应用中主挂掉了怎么办?
这个情况就需要,停止从库, 把从库以主库的启动命令起来就可以了。
1)停掉从库
kill -9 进程号
2)删除locat下文件
rm mongodb/db/locat.* -rf
3)启动从库
/usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data
--logpath=/usr/local/mongodb/logs --logappend --port= --fork
6) Mongdb Web 查看界面

7) MongoDB 增,删,改,查
[root@cacti bin]# ./mongo
MongoDB shell version: 2.0.
connecting to: test
> db.test.insert({ "Name" : "ymind", "age" : }); #在test数据库里插入数据
>
> db.test.find({ "Name" : "ymind" } ); #查询数据
{ "_id" : ObjectId("51c4187090db4e4751a3cd05"), "Name" : "ymind", "age" : }
> db.test.find({ "age" : } ); #查询数据
{ "_id" : ObjectId("51c4187090db4e4751a3cd05"), "Name" : "ymind", "age" : }
>
>
> db.test.update({"Name" : "ymind"}, { "$set" : { "age" : "" } } ); #修改数据
> db.test.find({ "Name" : "ymind" } );
{ "Name" : "ymind", "_id" : ObjectId("51c4187090db4e4751a3cd05"), "age" : "" }
>
> db.test.remove({ "Name" : "ymind" } ); #删除数据
> db.test.find({ "Name" : "ymind" } );
>
>
mongDB主从的更多相关文章
- [MongDB] 主从架构--官方极力不推荐
		一.缘由: 看着数据库大家庭都有主从模式,想着Mongodb应该也不会落下.但从官网看来,先是早先舍弃了Master-Master模式,现在又在不推荐 Master-Slave模式,这是要标新立异呀. ... 
- MongoDB的搭建并配置主从以及读写分离
		1.环境准备 1.Centos7 2.mongodb3.4.93.三台机器IP分别是:10.170.1.16.10.170.1.18.10.170.1.33 2.mongdb数据库的安装 如下操作是 ... 
- mongodb3.x主从配置及备份
		本文将介绍下mongodb主从配置及备份 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关 ... 
- mongdb复制集搭建
		可参考官网教程 复制集增加了数据的冗余同时也提高了mongodb的可靠性,相比传统的主从架构,mongodb具有自动容灾的特性,即主库挂掉后会自动从剩下的从库中选举出一个节点做为主库(不需要人工干预) ... 
- 缓存系统redis操作、mongdb、memeche
		mongdb :默认数据持久化,存在内存的同时也向硬盘写数据. redis:可配置数据持久化,默认数据在内存中 memeche:only support 内存模式 redis操作 https://ww ... 
- mongdb集群
		一.mongodb的集群 mongodb有两种架构: 第一种架构:和mysql的结构类似,也有主从结构,但是他不能实现故障自动切换 于是有了第二种架构.官方不推荐使用这种架构. 第二种:mongodb ... 
- Angular2入门系列教程3-多个组件,主从关系
		上一篇 Angular2项目初体验-编写自己的第一个组件 好了,前面简单介绍了Angular2的基本开发,并且写了一个非常简单的组件,这篇文章我们将要学会编写多个组件并且有主从关系 现在,假设我们要做 ... 
- MySQL主从环境下存储过程,函数,触发器,事件的复制情况
		下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆. 首先,创建一张测试表 mysql),age int); Query OK, rows affe ... 
- windows环境redis主从安装部署
		准备工作 下载windows环境redis,我下载的是2.4.5,解压,拷贝一主(master)两从(slaveof).主机端口使用6379,两从的端口分别为6380和6381, 我本地索性用6379 ... 
随机推荐
- 找呀志_通过开源框架引AsyncHttpClient处理get/post要求
			一个.开源参考架构的方法. 方法一 找到下载的文件的源代码,Com中的src文件夹下 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhp ... 
- Windows下C语言的Socket编程例子(TCP和UDP)
			原文:Windows下C语言的Socket编程例子(TCP和UDP) 刚刚学windows编程,所以想写学习笔记,这是一个简单的Socket程序例子,开发环境是vc6: 首先是TCP server端: ... 
- tomcat源代码Catalina
			Catalina的作用是初始化各个组件,并開始启动各个组件. 上文中介绍了Bootstrap是怎样启动Catalina的,如今来看看Catalina的作用: 1,Catalina通过Digester类 ... 
- Android单元测试Junit (一)
			1.在eclips中建立一个Android工程,具体信息如下: 2.配置单元测试环境,打开AndroidManifest.xml,具体代码如下所示: <?xml version="1. ... 
- [Node.js框架] 为什么要开发 Codekart 框架
			两年前,在被php的$符号和字符串处理折磨得半夜骂娘之后,我义无反顾地决定:珍爱生命,远离php. 之后一直在寻找一门“完美的语言”,先后接触了Lisp.python.java.Ruby.Lisp几乎 ... 
- JS中通过call方法实现继承
			原文:JS中通过call方法实现继承 讲解都写在注释里面了,有不对的地方请拍砖,谢谢! <html xmlns="http://www.w3.org/1999/xhtml"& ... 
- C# 如何生成CHM帮助文件
			原文:C# 如何生成CHM帮助文件 前一段时间应公司要求,让我开发一个数据库字段信息CHM帮助文件生成软件.结果当时我就二了,这个东西我只用过,不知道咋做啊.没想到老大很随意说一句:"没事, ... 
- 探秘ReSharper8.1版本中Architecture(架构工具)的改进
			在ReSharper 8.0新版本中,有一个叫做Architecture(结构工具)的新功能,此功能被定义为项目依赖关系分析.其目的是让用户可视化操作解决方案的结构.接下来,小编将在ReSharper ... 
- cocos2dx对于强大的RichText控制
			最近准备做一个聊天系统,开始准备使用cocos2dx的UIRichText控制显示屏聊天,在使用中发现的结果,cocos2dx的RichText很有限.全然不具备实现聊天的功能.仅仅实现了增加文本.图 ... 
- EnterpriseLibrary 6.0(微软企业库6.0学习笔记) 之Data Access Block 配置和获取链接字符串
			EnterpriseLibrary 的特点是快速开发,融合了微软工程师多年的经验,现在在微软内部有专门的一个小组在完善EnterpriseLibray,最近的更新时间是April 2013. 相关链接 ... 
