mysql主从 副本集_MongoDB主从复制和副本集
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主从复制和副本集相关推荐
- mysql 主从的作用_MySQL主从复制作用和原理
什么是主从复制 主从复制是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是准实时的业务数据库. 主从复制的作用 做数据的热备 作为后备数据库,主数据库故障后,可切换到从数据库继 ...
- mysql主从有关参数_mysql主从复制配置
一.mysql主从备份(复制)的基本原理 mysql支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.mysql复制基于主服务器在二进制日志中跟踪所有对数据库的 ...
- mysql主从配置原理_MySQL主从复制原理
MySQL主从复制是构建高可用MySQL的基础,复制就是让一台服务器的数据和其它服务器保持同步,一台主库可以同步到多台备库上面,备库也可以作为另一台服务器的主库.主库和备库之间可以有多种不同的组合方式 ...
- mysql 主从同步检查_MySQL主从复制一致性检测
在MySQL主从复制过程中,常常需要对某些重要的表进行一致性检查. 由于主从数据在同步时存在一定的延迟,因此直接读取服务器数据的方式无法严格保证信息的一致性.在数据在同步完全结束之前,一直处于不断变化 ...
- mysql主从配置常见问题_mysql 主从复制配置,以及常见问题解决!
一:我的mysql 5.7.15 ,系统是centos6.5 主从复制配置步骤: 瞅清楚!配置不要出错!! 二:遇到的问题 Got fatal error 1236 from master whe ...
- mysql主从注意事项_mysql主从复制亲测,以及注意事项
本人亲测,windows作为mysql主服务器,linux作为从服务器,使用两个linux配置步骤都一样,测一遍而已:区别配置文件在于windwos是my.ini.linux在/etc/my.cof ...
- mysql主从有关参数_MySQL 主从复制相关参数
列举了MySQL主从复制主要的相关参数 binlog server_id 服务器在集群中唯一标识符 log_bin[=binlog_name] 启动二进制日志 log_bin_index 二进制日志索 ...
- mysql主从切换机制torch_Mysql主从复制 - osc_y0vjyklt的个人空间 - OSCHINA - 中文开源技术交流社区...
Mysql主从复制原理 1:主库开始二进制日志(binlog): 2:从库执行change master 执行主库,此时主库会创建一个dump线程,用于向从库发送二进制日志: 3.从库执行 start ...
- mysql主从克隆服务器_mysql主从复制服务器配置
1.主从服务器分别作以下操作: 1.1.版本一致 1.2.初始化表,并在后台启动mysql 1.3.修改root的密码 2.修改主服务器master: #vi /etc/my.cnf [mysqld] ...
最新文章
- 文件的时间属性(摘自网友的博客)
- mysql 取某个范围内随机日期
- vue radio双向绑定_Vue是如何实现双向数据绑定的
- XAML 布局StackPanel
- PHP 销毁指定目录
- 关于反射的我的一些看法
- Extjs核心概念之Store
- PHP操作文件的常用函数
- 「ZigBee模块」基础实验(2)按键
- 成都最稳定的dns服务器地址,成都首选DNS服务器地址
- 高校wifi认证登录
- 内核区间树的使用Demo
- Python科学计算库(Numpy)基础篇(IDE为Pycharm)- 数组数值计算
- java 把文件压缩成zip文件
- 研发项目购置的软件服务器属于无形资产吗,购买云服务器属于无形资产
- uva10534 hdu2198 双向LIS问题
- 隔壁住着一个过气的明星是什么体验?
- C#中Trim的功能介绍
- windows2008r2 系统开放端口查看以及处理
- 关于Visio软件无法正常显示的解决办法
热门文章
- 症监护室自动临床信息管理系统简介
- Stata17 MP/SE/BE(附赠常用模型代码和熵值法计算代码)
- 欧洲杯与618:“夏季限定”MVP诞生记
- 信任中心2.0重装上阵,安全触手可及
- 奇瑞背水一战,或止于“理想很丰满”
- ubuntu删除文件和文件夹的rm命令
- PHP的传值与引用,php 传值与传引用的区别详解
- 2019年9月-最新整理国内2000个HTTPS代理ip
- 【组合数学】排列组合与各种计数数列
- elgamal签名算法c语言,ElGamal加密、签名算法笔记