mongodb配置主从模式
Mongodb的replication主要有两种:主从和副本集(replica set)。主从的原理和mysql类似,主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
现在mongodb官方建议用副本集替代主从复制,但是这不妨碍我们从主从复制入门,了解mongdob的replication。
什么是oplog:
MongoDB 的Replication是通过一个日志来存储写操作的,这个日志就叫做oplog。 在默认情况下,oplog分配的是5%的空闲磁盘空间。通常而言,这是一种合理的设置。可以通过mongod --oplogSize来改变oplog的日志大小。 oplog是capped collection,因为oplog的特点(不能太多把磁盘填满了,固定大小)需要,MongoDB才发明了capped collection(the oplog is actually the reason capped collections were invented)。
oplog的位置 oplog在local库: master/slave 架构下 local.oplog.$main。

主数据库配置(master.conf )
# 数据库文件存储位置
dbpath = /data/db/master
# log文件存储位置
logpath = /data/log/mongodb/master/mongodb.log
# 使用追加的方式写日志
logappend = true
# 是否以守护进程方式运行
fork = true
# 端口号
port =
# 是否启用认证
auth = true
# 集群的私钥的完整路径,只对于Replica Set 架构有效(noauth = true时不用配置此项)
keyFile = /usr/local/mongodb/mongodb-keyfile
# diaglog选项 =off =W =R =both =W+some reads
#diaglog =
# 设置主从服务器
master = true
# 设置oplog的大小(MB)
oplogSize=
从数据库配置(slave1.conf)
# 数据库文件存储位置
dbpath = /data/db/slave1 # log文件存储位置
logpath = /data/log/mongodb/slave1/mongodb.log # 使用追加的方式写日志
logappend = true # 是否以守护进程方式运行
fork = true # 端口号
port = # 是否启用认证
auth = true # 集群的私钥的完整路径,只对于Replica Set 架构有效(noauth = true时不用配置此项)
keyFile = /usr/local/mongodb/mongodb-keyfile
# diaglog选项 =off =W =R =both =W+some reads
#diaglog = # 设置主从服务器
slave = true # 用于从节点,指定从节点的复制来源(主节点的IP+端口),格式为:<host><:port>
source = 127.0.0.1:
注意:
如果使用认证的方式启动服务(auth = true),那么要在主从服务器配置私钥。
// 在一台服务器上生成私钥
openssl rand -base64 745 > mongodb-keyfile // 修改私钥的权限为可读写
chmod 600 mongodb-keyfile // 将私钥拷贝到其余的服务器上
scp mongodb-keyfile root@xxx.xxx.xxx.xxx:/usr/local/mongodb/
然后配置私钥路径,启动服务。
启动数据库:
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/master.conf
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/slave1.conf
当启动slave后,slave端会自动进行初始化resync同步,可以在日志查看到同步信息:
--03T11::46.396+ I NETWORK [thread1] waiting for connections on port
--03T11::47.415+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::47.458+ I REPL [replslave] resync: dropping database admin
--03T11::47.458+ I REPL [replslave] resync: cloning database admin to get an initial copy
--03T11::47.481+ I COMMAND [replslave] setting featureCompatibilityVersion to 3.4
--03T11::47.482+ I STORAGE [replslave] copying indexes for: { name: "system.version", type: "collection", options: {}, info: { readOnly: false }, idIndex: { v: , key: { _id: }, name: "_id_", ns: "admin.system.version" } }
--03T11::47.500+ I INDEX [replslave] build index on: admin.system.version properties: { v: , key: { version: }, name: "incompatible_with_version_32", ns: "admin.system.version" }
--03T11::47.500+ I INDEX [replslave] building index using bulk method; build may temporarily use up to megabytes of RAM
--03T11::47.504+ I INDEX [replslave] build index done. scanned total records. secs
--03T11::47.504+ I REPL [replslave] resync: done with initial clone for db: admin
--03T11::47.505+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::48.506+ I REPL [replslave] sleep sec before next pass
--03T11::49.506+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::50.507+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::51.507+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::52.508+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::53.509+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::54.509+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::55.510+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::56.510+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::58.493+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::59.494+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::00.495+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::01.495+ I REPL [replslave] syncing from host:127.0.0.1:
--03T11::02.496+ I REPL [replslave] syncing from host:127.0.0.1:
resync:
当slave端落后过多的时候需要进行resync。resync会在master上加一个全局的写锁,会阻塞其它的写操作,直到resync结束。可以使用数据库命令进行resync:
use admin
db.runCommand({"resync":1})

mongodb配置主从模式的更多相关文章
- 搭建高可用mongodb集群(一)——mongodb配置主从模式
转载自:LANCEYAN.COM 在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQ ...
- mongodb配置“主从”模式
版本的mongodb不支持Master/slave模式了.推荐使用集群模式.大家都知道,集群模式需要多于三台的奇数台机器(奇数个进程测试有意义,实际意义不大)现在我的手头有两台主机,更合理的配置个人觉 ...
- MySql配置主从模式 Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
今天在学习MyCat环境搭建的时候,在配置MySql的主从模式,发现slave在配置完毕后,配置的内容全部正确的情况下,报错了? Last_IO_Error: Fatal error: The sla ...
- mongodb集群配置主从模式
测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 master-node 从服务器IP地址:192.168.197.22 slave-node 关闭 ...
- rabbitmq配置镜像模式
学习是spring cloud的时候用到了rabbitmq,在实际项目中也用到了,镜像模式是集群的基础上面配置的,就多了一个数据同步,rabbitmq存储消息用的是cookie,配置之前先同步cook ...
- redis的主从模式搭建及注意事项
前言:本文先分享下如何搭建redis的主从模式配置,以及主从模式配置的注意事项.后续会继续分享如何实现一个高可用的redis服务,redis的Sentinel 哨兵模式及集群搭建. 安装: 1,yum ...
- CentOS双机中Docker下安装Mysql并配置互为主从模式
CentOS双机中Docker下安装Mysql并配置互为主从模式 目录 1.搜索镜像... 1 2.拉取镜像... 1 3.绑定端口: 1 4.配置文件(修改/etc/mysql/my.cnf文件): ...
- activemq持久化配置,设置为主从模式(带复制的主从模式,应用mysql数据库)
配置文件如下<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor l ...
- Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比(转)
摘要: redis作为一种NoSql数据库,其提供了一种高效的缓存方案,本文则主要对其单例,主从模式,sentinel以及集群的配置方式进行说明,对比其优缺点,阐述redis作为一种缓存框架的高可用性 ...
随机推荐
- winfrom 多线程 并发 和定时任务
static void Main(string[] args) { //多个线程修改同一个值,使用lock锁解决并发 for (int i = 0; i < 4; i++) { Task.Fac ...
- 关键字搜索高亮jQuery插件
// textSearch.js v1.0 文字,关键字的页面纯客户端搜索// 2010-06-23 修复多字母检索标签破碎的问题// 2010-06-29 修复页面注释显示的问题// 2013-05 ...
- C++获取本机用于连接的IP地址
最近写个程序需要获取本机用于连接的IP地址,经过很多的尝试后,最终使用的方法如下: 使用cmd命令 netstat | findstr “192.168.6.66:3333” > D:\ ...
- POJ 1149 PIGS 建图,最大流
题意: 你m个猪圈以及每个猪圈里原来有多少头猪,先后给你n个人,每个人能打开某一些猪圈并且他们最多想买Ki头猪,在每一个人买完后能将打开的猪圈中的猪顺意分配在这次打开猪圈里,在下一个人来之前 已打开的 ...
- MySQL 快速入门教程
转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...
- 关于SELECT 逻辑的执行顺序问题
不会有大多数人都和我一样的认为,是先进行的Where 剔除结果集,再进行Join的吧 SQL server 2014 逻辑执行标准: https://msdn.microsoft.com/en-us/ ...
- nativeLibraryDirectories=[/data/app/com.lukouapp-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libxxxx.so
一开始我遇到的问题是,如果手机有SD卡槽,则不管有没有插卡,都会闪退,打日记后发现是找不到so文件.报错日记如下: nativeLibraryDirectories=[/data/app/com.lu ...
- jQuery_DOM学习之------创建节点及节点属性
DOM创建节点及节点属性 一.创建新的节点并添加到dom中 dom 节点创建的过程(创建节点<元素.属性.文本等>.添加节点的属性.加入到文档中) jQuery创建元素节点的方法: 创建元 ...
- Android BGABadgeView:BGABadgeImageView以及BGABadgeRelativeLayout(4)
Android BGABadgeView:BGABadgeImageView以及BGABadgeRelativeLayout(4) 在附录文章5,6,7的基础上,写一个小例子说明BGABadge ...
- 【树状数组+离线查询】HDU 3333 Turing Tree
https://www.bnuoj.com/v3/contest_show.php?cid=9149#problem/H [题意] 给定一个数组,查询任意区间内不同数字之和. (n<=30000 ...