mongodb-多节点复制及的使用

单节点模式
--首先,单节点模式部署起来很方便,其次,单节点模式会节省资源
复制集
----复制集概念
--传统主从结构MASTER/SLAVE-->复制集概念
复制集是由一组拥有相同数据集的mongod实例组成的集群

----两类节点
--数据节点:存储数据,可以充当主从节点
--投票节点:负责选举,不存储数据,不能充当主从节点

主节点接收客户端发送的所有Write操作,一个复制集中只能有一个主节点,oplog记录写操作,不记录到读操作中,mongodb的从库是绝对无法写入的,杜绝了人为干预
mongodb的复制集是异步复制的形式完成的,

----复制集特点
-- 数据的一致性
主是唯一的 莫有MySQL那样的双主结构
大多数原则 集群存活节点小鱼等于二分一时集群不可写,只可读操作 

是否能选举出新的主节点,是由当前复制集成员存活数量来决定
复制集的服务器挂了一般就没办法选举了,将全部降为从节点

从库无法写入 MySQL从库的readonly对具有super权限的账户无效 readonly = 1只可读,从节点绝对不可写   

自动容灾 主从MS X
replicaSet


----mongodb复制集搭建
--创建data目录
--创建log目录
--创建conf目录
创建节点配置
定义三个端口配置文件 配置文件
配置文件中的文件夹都需要提前创建好

----开启服务
mongod -f conf/28001.conf
mongod -f conf/28002.conf
mongod -f conf/28003.conf

进入mongo服务 [python@bogon ~]$ mongo 192.168.25.129:28001/admin(admin指库名)


----定义mongoDB内部的配置文件 --- 这个config的id索引必须指定系统的用户名
config = {
_id:"python",
members:[
{_id:0,host:"192.168.25.129:28001"},
{_id:1,host:"192.168.25.129:28002"},
{_id:2,host:"192.168.25.129:28003"}]
}

----id后面必须跟上数字,host后面必须跟上字符串,如果不按这个格式写会报错 SyntaxError: Unexpected number

----config.members方法可以输入定义config内容
使用config.members[id索引直接可以的到配置config的对应id的token]

----修改当前索引id的配置文件 ----配置了 arbiterOnly 直接就是主节点了
config.members[2] = {"_id":2,"host":"192.168.25.129:28003","arbiterOnly":true}

----初始化文件配置
rs.initiate(config)

----mongodb的执行命令返回结果和linux是相反的0代表失败,1代表成功


----执行成功后直接回车就能进入配置好的复制集


----rs.status() 查看复制集的状态


----mongo 192.168.25.129:端口号 执行后会出来 PRIMARY  SECONDARY  ARBITER


----只能通过主节点写入数据


----查询从节点的时候会报错 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/mongo/shell/query.js:131
我们必须要开起slaveOk rs.slaveOk(1或true)连个参数默认都是开起查询


复制集成员
----按是否存放数据分区
数据节点:存放数据(实体物理文件*.ns*.0等)的节点,包括主节点、从节点。
投票节点:不存放数据精作为选举和充当复制节点。
直接可以通过查看data目录下面的文件得到结果

----按功能区分
主节点:提供读写服务的节点
从节点:提供读服务的节点
|--隐藏节点:对程序不可见的节点
|--延时节点:延时复制节点
|--'投票'节点:具有投票权的节点,不是arbiter
投票节点:Arbiter节点,无数据,仅作为选举和充当复制集节点,也称它为选举节点。


----配置文件选项
_id 整数 _id:0
host 字符串 host:"192.168.25.129:28001"
arbiterOnly 布尔值 arbiterOnly:true
priority 整数 priority = 0 | 1 ----生成主节点的优先级0为最小永远都不可能,一般来说要把权重设置成0才能使得节点调整为hidden
hidden 布尔值 hidden = true | false , 0|1 ----隐藏节点:对程序不可见的节点
votes 整数 votes=0|1 ----mongodb复制集只有有7个复制集出来参与选举,其余多出来的必须把votes调整成0 ----votes在2.6版本后面只能设置0或者1,不能超过此票数
slaveDelay 整数 slaveDelay = 3600 ----延时节点:延时复制节点 ----一般都会定义一个延时节点,当数据库误操作了可以通过延时节点挽救数据,延时节点到了时间才会执行该代码操作
buildIndexes 布尔值 buildIndexeses = true|false,0|1 ----将主库的索引在从库中也进行使用,但是_id在此不管用,应为_id是全局索引,当使用这个参数的时候也需要把权重这个参数修改成0要不然就会报错

----rs.addArb() 设置,给节点添加ARBITER功能


----rs.stepDown(时间/秒) 可以在多少时间后让主节点降级成从节点


----rs.config()变量可以通过,可以通过变量赋值conf = rs.config()


----config得到config的参数可以通过config.members[下标索引]获得该所在的对象 --之后可以.配置选项设置参数进去
config.members[0].priority = 参数 得到结果


----rs.reconfig(config)初始化一个新config参数


----pretty直接可以格式化代码


----修改配置文件的版本 db.system.replset.update({_id:"python"},{$set:{version:16}}) --每当调整一次config配置的时候,都会在version+1


----config初始化的参数都在loacl库中system.replset




节点属性
----主节点 priority(优先级)至少为1


----从节点 priority(优先级)至少为0


----延迟节点 priority(优先级)为0并且hidden = true 并且 slaveDelay = xx


----隐藏节点 priority(优先级)为0并且hidden=true|false


----无索引 priority(优先级)为0并且buildIndexs = true

mongo新特性
----原:PRIMARY节点写入创建的库 ARBITER没有同步过来
新:PRIMARY节点写入创建的库 ARBITER同步过来



mongodb操作
1、关闭一个mongodb服务 db.runCommand("shutdownServer ")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值