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 Setting
2.
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 ...
随机推荐
- ArcGIS API for Silverlight 编辑Geometry
概述 ArcMap的编辑功能是非常强大的,ArcEngine编写的CS程序也可以用到ArcMap中提供的编辑功能,那么ArcGIS API forSilverlight针对Geometry的编辑提供了 ...
- HtmlAgilityPack + Fizzler
HtmlAgilityPack + Fizzler 这两天在做个爬虫, 一次任务要下载3万多个页面, 然后从这3万多个页面提取数据. 以前写过两年的类似的东西, 基本都是写正则表达式, 速度快, 就是 ...
- 你要知道的C与C++的区别
原文:你要知道的C与C++的区别 如果要说C和C++的区别的话,可能可以列出很多方面出来,但是有许多方面的区别是我们学完这两门语言之后就可以 很好的理解和区分的,比如C是面向过程的一门编程语言,C++ ...
- SOA面向服务架构
SOA面向服务架构 风尘浪子 只要肯努力,梦想总有一天会实现 随笔分类 - SOA面向服务架构 结合领域驱动设计的SOA分布式软件架构 摘要: 领域驱动设计DDD的总体结构,Repository层使用 ...
- 使用Python改写的身份证信息查询小程序
花了几天时间过了一遍python基础.真心感觉python让世界充满了爱…先简单的使用一下python好了,拿以前写的<C语言身份证信息查询系统(修改版)>开刀~ 很多东西,不需要考虑C语 ...
- 基于Asterisk的VoIP开发指南——(1)实现基本呼叫功能
原文:基于Asterisk的VoIP开发指南--(1)实现基本呼叫功能 说明: 1.本文档探讨基于Asterisk如何实现VoIP的一些基本功能,包括基本呼叫功能的方案选取.主叫号码透传.如何编写As ...
- 【原版的:参赛作品】窥秘懒---android打开下拉手势刷新时代
小飒的成长史原创作品:窥视懒人的秘密---android下拉刷新开启手势的新纪元转载请注明出处 **************************************************** ...
- wpa_cli P2P 连接相关的调试命令
在最近的一次客户端上的调试p2p的wifi display, 他们中的一半Android该调整了,整个前所以没有太多的研究p2p过程连接, 客户现在使用的非Android平台架构. 需要协助客户这么多 ...
- 【转】 Android用于提示等待的ProgressDialog
原文地址:http://blog.csdn.net/wleing/article/details/6086321 为了安抚用户等待的焦急心情,我们用ProgressDialog.它的用法书上有例子,就 ...
- 迷你 MVC
深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的 2014-04-05 13:52 by 自由的生活, 645 阅读, 2 评论, 收藏, 编 ...