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 ...
随机推荐
- 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路
我只是一个小菜鸟,对于自主学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识.小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...
- JavasScript实现调查问卷插件
原文:JavasScript实现调查问卷插件 鄙人屌丝程序猿一枚,闲来无事,想尝试攻城师是感觉,于是乎搞了点小玩意.用js实现调查问卷,实现了常规的题型,单选,多选,排序,填空,矩阵等. 遂开源贴出来 ...
- linux监控命令全覆盖(图文说明)
1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu.内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcis ...
- Java 多并发之原子访问(Atomic Access)
在编程中,一个原子操作是只会出现一次的.一个原子操作在中间不会停止:要么全部发生要么一点也不发生.我们只有在原子操作完成之后才会看到原子操作的具体影响. 甚至是非常简单的表达式能够构造分解为简单操作的 ...
- 转载:Linux Used内存到底到哪里去了?
转自:http://blogread.cn/it/article/6264?f=wb2 有时在Linux下会碰到这样的问题:ps aux看到的RSS内存只有不到30M,但是free看到内存却已经使用了 ...
- C#使用COM搜索本地word文档关键字
/// <summary> /// 检索根目录下的子目录及其所有文件,并在datagridview中显示文档名称及路径--递归调用 /// </summary> /// < ...
- SQL Mon 介绍
原文:SQL Mon 介绍 这是一个相当高级的SQL Server监控工具,全面监控SQL Server的活动与性能,分析性能瓶颈,给出优化建议. red-gate有一个在线的数据库监控工具,不过那个 ...
- How do I create an IIS application and application pool using InnoSetup script
Create an IIS application. Create a new IIS application pool and set it's .NET version to 4. Set the ...
- 【转】Android Application 对象介绍
What is Application Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application ...
- asp.net、mvc、ajax、js、jquery、sql、EF、linq、netadvantage第三方控件知识点笔记
很简单,如下: 父页面:(弹出提示框) function newwindow(obj) { var rtn = window.showModalDialog('NewPage.htm','','sta ...