MongoDB有主从复制和副本集两种主从复制模式,主从复制最大的问题就是无法自动故障转移,MongoDB副本集解决了主从模式无法自动故障转义的特点,因此是复制的首选。

对于简单的主从复制无法自动故障转移的缺陷,各个数据库都在改进,MySQL推出的MGR,Redis的哨兵,Mongodb的复制集。

对于主从复制模式:

mongodb的主从配置异常简单,

如果是非安全认证模式,只需要在主节点增加master = true,

从节点增加slave = true和source = ip:port两个节点,分别启动即可,不管主节点是否存在数据以及存在多少数据,从节点以slave的方式启动,就会自动同步主节点的数据。

相比MySQL的主从模式(各种原因导致的主从事务不一致),简单的不是一点半点。

port=12345#端口

dbpath= /usr/local/mongodb/db #数据库存文件存放目录

logpath= /usr/local/mongodb/db/mongodb.log#日志文件存放路径

logappend=true #使用追加的方式写日志

fork=true #守护程序的方式启用,false即不在后台运行

maxConns=100#最大同时连接数

journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。

storageEngine=wiredTiger #存储引擎有mmapv1、wiretiger、mongorocks

bind_ip = 10.104.174.247#这样就可外部访问了,例如从win10中去连虚拟机中的MongoDB

#复制只需要增加master =true

master =true

#如果开启了安全认证,需要增加如下两个节点。

auth=true #启用验证

keyFile= /usr/local/mongodb/db/keyfile #添加keyfile

oplogSize=2048 #oplog大小

安全认证模式:

关于安全认证模式,纠结了好久,mongodb是这样的:

1,对于单实例的mongodb,(创建用户之后)开启安全认证需要增加auth = true配置即可,

2,主从或者副本集模式下,(创建用户之后)如果要开启安全认证,必须要加上keyFile(设置可以file之后auth参数才有效),二者必须同时配置,否则(主从or副本集)就不成功。

需要注意的是,如果在主节点创建了用户,主从节点以开启安全认证方式启动,主节点的用户信息同样可以同步到从节点,因此从节点并不需要再重新创建用户信息。

副本的初始化:

mongodb的副本在启动的时候会自动从主节点的oplog中读取数据,从而完成初始化,这一点非常省心。

当然,可能存在主节点数据超过oplog大小或者说主节点oplog发生了重用(覆盖),那么就无法通过oplog自动做到主从的同步,此时可以可以:

1,以autoresync = true的方式重启副本。

2,删除从节点的数据文件然后重新启动从节点。

3,删除从节点的数据文件,直接copy主节点的数据文件到从节点(个人认为这种方式更加简单高效),启动从节点即可。

三种方式都可以达到完整同步主节点数据的目的。

副本集搭建

由于MongoDB副本会自动从主节点(或者相邻的最近节点)同步数据,不会出现事务冲突之类错误,因此副本集的配置也很简单,这一点要比MySQL的各种配置简单太多。

主节点生成keyfile:

openssl rand -base64 100 > /usr/local/mongodb/db/keyfile --文件内容采base64编码,一共100个字符

修改文件权限:

chmod 600 /usr/local/mongodb/db/keyfile

复制改keyfile至各个节点,然后启动各个节点。

搭建副本集需要移除掉主从复制的一些配置项(主节点的master = true,从节点的slave,source等配置项),如下是一个最简单的配置项。

port=8000#端口

dbpath= /usr/local/mongodb/db #数据库存文件存放目录

logpath= /usr/local/mongodb/db/mongodb.log#日志文件存放路径

logappend=true #使用追加的方式写日志

fork=true #守护程序的方式启用,false即不在后台运行

maxConns=100#最大同时连接数

auth=true #启用验证

journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。

#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。

storageEngine=wiredTiger #存储引擎有mmapv1、wiretiger、mongorocks

bind_ip = 10.104.174.247keyFile= /usr/local/mongodb/db/keyfile #添加keyfile

#master =true

oplogSize=2048#oplog

replSet = rstest #副本集名称

主节点副本集初始化

rs.initiate()

(数秒之后)同时发现rstest:SECONDARY>变为rstest:PRIMARY>

加入新节点

rs.add("10.104.174.247:9000")

rs.add("10.104.174.247:10000")

rs.status() 查看副本集主从节点的状态

"health" : 1, //1 表明正常; 0 表明异常

"state" : 1, // 1 表明是Primary; 2 表明是Secondary;

"stateStr" : "PRIMARY", //表明此机器是主库

rs.isMaster()查看主节点信息

副本集也可以通过定义主机集合的方式

config_rs1={_id:'rs1',members:[

{_id:1,host:'10.104.174.247:8000',priority:1},

{_id:2,host:'10.104.174.247:9000'},

{_id:3,host:'10.104.174.247:1000'}]}

rs.initiate(config_rs1) //初始化配置

FROM:https://www.cnblogs.com/wy123/p/10026381.html

mysql主从 副本集_MongoDB主从复制和副本集相关推荐

  1. mysql 主从的作用_MySQL主从复制作用和原理

    什么是主从复制 主从复制是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是准实时的业务数据库. 主从复制的作用 做数据的热备 作为后备数据库,主数据库故障后,可切换到从数据库继 ...

  2. mysql主从有关参数_mysql主从复制配置

    一.mysql主从备份(复制)的基本原理 mysql支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.mysql复制基于主服务器在二进制日志中跟踪所有对数据库的 ...

  3. mysql主从配置原理_MySQL主从复制原理

    MySQL主从复制是构建高可用MySQL的基础,复制就是让一台服务器的数据和其它服务器保持同步,一台主库可以同步到多台备库上面,备库也可以作为另一台服务器的主库.主库和备库之间可以有多种不同的组合方式 ...

  4. mysql 主从同步检查_MySQL主从复制一致性检测

    在MySQL主从复制过程中,常常需要对某些重要的表进行一致性检查. 由于主从数据在同步时存在一定的延迟,因此直接读取服务器数据的方式无法严格保证信息的一致性.在数据在同步完全结束之前,一直处于不断变化 ...

  5. mysql主从配置常见问题_mysql 主从复制配置,以及常见问题解决!

    一:我的mysql 5.7.15   ,系统是centos6.5 主从复制配置步骤: 瞅清楚!配置不要出错!! 二:遇到的问题 Got fatal error 1236 from master whe ...

  6. mysql主从注意事项_mysql主从复制亲测,以及注意事项

    本人亲测,windows作为mysql主服务器,linux作为从服务器,使用两个linux配置步骤都一样,测一遍而已:区别配置文件在于windwos是my.ini.linux在/etc/my.cof ...

  7. mysql主从有关参数_MySQL 主从复制相关参数

    列举了MySQL主从复制主要的相关参数 binlog server_id 服务器在集群中唯一标识符 log_bin[=binlog_name] 启动二进制日志 log_bin_index 二进制日志索 ...

  8. mysql主从切换机制torch_Mysql主从复制 - osc_y0vjyklt的个人空间 - OSCHINA - 中文开源技术交流社区...

    Mysql主从复制原理 1:主库开始二进制日志(binlog): 2:从库执行change master 执行主库,此时主库会创建一个dump线程,用于向从库发送二进制日志: 3.从库执行 start ...

  9. mysql主从克隆服务器_mysql主从复制服务器配置

    1.主从服务器分别作以下操作: 1.1.版本一致 1.2.初始化表,并在后台启动mysql 1.3.修改root的密码 2.修改主服务器master: #vi /etc/my.cnf [mysqld] ...

最新文章

  1. 文件的时间属性(摘自网友的博客)
  2. mysql 取某个范围内随机日期
  3. vue radio双向绑定_Vue是如何实现双向数据绑定的
  4. XAML 布局StackPanel
  5. PHP 销毁指定目录
  6. 关于反射的我的一些看法
  7. Extjs核心概念之Store
  8. PHP操作文件的常用函数
  9. 「ZigBee模块」基础实验(2)按键
  10. 成都最稳定的dns服务器地址,成都首选DNS服务器地址
  11. 高校wifi认证登录
  12. 内核区间树的使用Demo
  13. Python科学计算库(Numpy)基础篇(IDE为Pycharm)- 数组数值计算
  14. java 把文件压缩成zip文件
  15. 研发项目购置的软件服务器属于无形资产吗,购买云服务器属于无形资产
  16. uva10534 hdu2198 双向LIS问题
  17. 隔壁住着一个过气的明星是什么体验?
  18. C#中Trim的功能介绍
  19. windows2008r2 系统开放端口查看以及处理
  20. 关于Visio软件无法正常显示的解决办法

热门文章

  1. 症监护室自动临床信息管理系统简介
  2. Stata17 MP/SE/BE(附赠常用模型代码和熵值法计算代码)
  3. 欧洲杯与618:“夏季限定”MVP诞生记
  4. 信任中心2.0重装上阵,安全触手可及
  5. 奇瑞背水一战,或止于“理想很丰满”
  6. ubuntu删除文件和文件夹的rm命令
  7. PHP的传值与引用,php 传值与传引用的区别详解
  8. 2019年9月-最新整理国内2000个HTTPS代理ip
  9. 【组合数学】排列组合与各种计数数列
  10. elgamal签名算法c语言,ElGamal加密、签名算法笔记