Mongo服务器集群配置——主从复制
2016-06-15 14:28
489 查看
MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性;复制还允许您从硬件故障和服务中断中恢复数据。
MongoDB复制原理
mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
mongodb各个节点常见的搭配方式为:一主一从、一主多从。
主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致
默认读写操作都指向主节点。
主节点是唯一的,但不固定。
主从复制实践
开启一个mongodb实例可以直接通过shell命令也可以通过配置文件开启,在之前的文章中已经介绍shell命令开启,本文我们将通过config文件的方式开启。
语法格式:mongod-fconfig.cnf
1、接下来我们需要配置三份配置文件,10001,10002,10003;之中10001作为主库,其他的为从库;
<--10001
dbpath=D:\MongoData\10001\db
logpath=D:\MongoData\10001\log\MongoDB.log
bind_ip=127.0.0.1
port=10001
master=true--主节点
<--10002
dbpath=D:\MongoData\10002\db
logpath=D:\MongoData\10002\log\MongoDB.log
bind_ip=127.0.0.1
port=10002
slave=true--从节点
source=127.0.0.1:10001--从对应的主节点复制数据
<--10003
dbpath=D:\MongoData\10003\db
logpath=D:\MongoData\10003\log\MongoDB.log
bind_ip=127.0.0.1
port=10003
slave=true--从节点
--10003我们没有这只source,待会儿我们手动设置
2、开启mongodb实例
上文中已经告诉大家怎么把mongodb实例总成windows服务来开启;我们将创建startup.bat(开启服务)
<--startup.bat
mongod-fD:\MongoData\10001\conf\10001.conf--install--serviceNameMongoDB--serviceDisplayNameMongoDB10001
NETSTARTMongoDB
pause
--注意用到-install命令,conf文件必须是绝对路径。
3、测试
从库10002第一次查询person没有记录,当主库10001person插入一条数据后,再去查询从库成功读取到数据,说明我们的主从复制完全没有问题。
注意
MongoDb的“notmasterandslaveok=false”错误及解决方法
在SECONDARY查询出发现如下错误:
SECONDARY>showcollections;
SatAug415:29:00uncaughtexception:error:{"$err":"notmasterandslaveok=false","code":13435}
这是正常的,因为SECONDARY是不允许读写的,如果非要解决,方法如下:
SECONDARY>rs.slaveOk();
MongoDB复制原理
mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
mongodb各个节点常见的搭配方式为:一主一从、一主多从。
主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致
默认读写操作都指向主节点。
主节点是唯一的,但不固定。
主从复制实践
开启一个mongodb实例可以直接通过shell命令也可以通过配置文件开启,在之前的文章中已经介绍shell命令开启,本文我们将通过config文件的方式开启。
语法格式:mongod-fconfig.cnf
1、接下来我们需要配置三份配置文件,10001,10002,10003;之中10001作为主库,其他的为从库;
2、开启mongodb实例
上文中已经告诉大家怎么把mongodb实例总成windows服务来开启;我们将创建startup.bat(开启服务)
3、测试
从库10002第一次查询person没有记录,当主库10001person插入一条数据后,再去查询从库成功读取到数据,说明我们的主从复制完全没有问题。
注意
MongoDb的“notmasterandslaveok=false”错误及解决方法
在SECONDARY查询出发现如下错误:
SECONDARY>showcollections;
SatAug415:29:00uncaughtexception:error:{"$err":"notmasterandslaveok=false","code":13435}
这是正常的,因为SECONDARY是不允许读写的,如果非要解决,方法如下:
SECONDARY>rs.slaveOk();
相关文章推荐
- launcher界面下google文件夹的修改
- 消息队列中点对点与发布订阅区别(good)
- Go学习笔记之基础数据类型
- google打不开,修改google hosts
- 结合django动态生成salt的pillar数据
- Codeforces-Round-#357-(Div.-2)-A-Good-Contest
- tensorflow从0开始(3)——数学概念的自我理解
- Codeforces Round #357 (Div. 2) A. A Good Contest
- django的cache
- Codeforces Round #357 (Div. 2) A. A Good Contest 水题
- go环境搭建安装gocode出现mkdir: cannot create directory ‘/usr/local/go/bin/gocode’: Permission denied
- How to Generate a Good Word Embedding?
- Google开源基于Deep Learning的word2vec工具
- Google-hosts
- go NATS
- django makemigrations的一个特性
- imx6q 修改开机LOGO指南
- Go语言gdb调试打印全局变量
- 下载Google Play中的APK
- 5A - Chat Servers Outgoing Traffic