主从复制                                                                                      

  • 主从节点开启

主节点的设置,只需要在某一个服务启动时加上 –master 参数 ,而从节点加上 –slave 和 –source 参数,即可实现同步。

所有的从节点都从主节点复制内容。目前还没有能从从节点复制的机制,原因是从节点没有保存自己的oplog。

  • 添加及删除源

添加从节点可以在开启的时候不添加源,可以向source集合中添加主节点信息。

use local
db.sources.insert({"host":"192.168.126.148:10000"})

删除。

db.sources.remove({"host":"192.168.126.148:10000"})

复制集                                                                                      

  • 部署复制集

使用 –replSet 是用来让服务器知道在这个replcopy复制集中还有别的伙伴,位置在 IP : PORT 。

  • 初始化复制集

启动之后,日志就会告诉我们复制集还没有进行初始化,因为还差最后一步,在shell中初始化复制集。

  • 复制集中的节点

节点(非仲裁节点)都有优先权。优先权为0则是被动节点,不能成为活跃节点。优先值不为0,则按照由大到小选出活跃节点,如果优先值一样的话,就看谁的数据比较新。如果有两个优先值为1,一个为0.5的节点,那么优先值为1的两个服务器就必须比较谁的数据比较新,数据新的成为活跃节点。而0.5的节点,只有在前两个节点都不能用时才能成为活跃节点。

>members.push({
..."_id":3,
..."host":"192.168.233.1:27017",
..."priority":50
...})

修改priority键来完成标准节点和被动节点。

>members.push({
..."_id":3,
..."host":"192.168.233.1:27017",
..."arbiterOnly":true
...})

arbiterOnly键可以指定仲裁节点。

备份节点会从活跃节点抽取oplog,并执行操作。活跃节点写操作到自己的本地oplog,这样就能成为活跃节点了。oplog中的操作包含严格递增的序号,通过这个序号来判断数据的时效性。

  • 主从配置信息

  • 读写分离

写数据

读数据

从从数据库中读取数据报错,只要执行db.getMongo().setSlaveOk()命令后,便可查询从数据库了。

  • 增加节点

第一种方法是通过oplog来增加节点。

数据库系统自动进行初始化、数据同步。

第二种方法是通过数据库快照(—fastsync)和oplog增加节点

mongo --dbpath=../dbs/node3 --logpath=../logs/node3.log --port 27017 --replSet replcopy/192.168.126.143:27017 --fastsync

再将节点添加到复制集。

  • 删除节点

  • 主从操作日志oplog

  • 阻塞复制

可以用getLastError的w参数来确保数据的同步性,运行getLastError会进入阻塞状态,直到N个服务器复制了最新的写入操作为止。

>db.runCommand({"getLastError":1,"w":N})

分片                                                                                            

  • 片键

在设置分片时,需要从集合中选择一个键,用该键的值作为拆分数据的依据。加入选择人员的名字name作为片键,那么第一片可能就会存放名字以A~H开头的文档,第二片存名字以I~P开头的文档,依次下去。

  • 建立分片

建立分片需要3个角色。

1、Shard Server

存储数据的分片

2、Config Server

存储所有Shard节点的配置信息。

3、mongos

客户端接入Shard的一个前端路由器。

服务器信息:

Shard Server 1:20000

Shard Server 2:20001

Config Server : 30000

Route Process : 40000

  • 启动 Config Server 配置服务器

  • 启动mongos路由

  • 启动shard Server服务器

  • 配置Sharding

首先是添加端口20000和20001的片,其次设置分片存储数据库,设置分片的集合名称,且必须指定shard key(这里是_id),系统会自动创建索引。

  • 验证sharding正常工作

查看磁盘上的物理文件情况。

表名test.personalinfo已经被分片处理了,但是通过mongos路由并感觉不到数据存放在哪个shard的chunk上的。

  • 列出所有的shard Server

  • 查看Sharding信息

  • 判断是否是Sharding

《MongoDB学习笔记(四)--索引 && 性能优化》 传送门 http://www.cnblogs.com/yydcdut/p/3563704.html

《MongoDB学习笔记(六)--复制集+sharding分片 && 总结》 传送门 http://www.cnblogs.com/yydcdut/p/3566489.html

转载请注明出处:http://www.cnblogs.com/yydcdut/p/3564470.html

MongoDB学习笔记(五)--复制集 && sharding分片的更多相关文章

  1. MongoDB学习笔记(六)--复制集+sharding分片 && 总结

    复制集+sharding分片                                                               背景 主机 IP 服务及端口 Server A ...

  2. Mongodb学习笔记五(C#操作mongodb)

    mongodb c# driver(驱动)介绍 目前基于C#的mongodb驱动有两种,分别是官方驱动(下载地址)和samus驱动(下载地址). 本次我们只演示官方驱动的使用方法. 官方驱动文档查看 ...

  3. MongoDB学习笔记五:聚合

    『count』count是最简单的聚合工具,返回集合中的文档数量:> db.foo.count()0> db.foo.insert({"x" : 1})> db. ...

  4. MongoDB学习笔记五—查询上

    数据准备 { , "goods_name" : "KD876", "createTime" : ISODate("2016-12- ...

  5. MongoDB学习笔记(五) MongoDB文件存取操作

    由于MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到MongoDB的文档结 ...

  6. MongoDB学习笔记(四)--索引 && 性能优化

    索引                                                                                             基础索引 ...

  7. MongoDB学习笔记(转)

    MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...

  8. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  9. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

随机推荐

  1. [leetcode sort]57. Insert Interval

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...

  2. android无后缀二进制执行文件替代apk实现程序功能

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha android无后缀二进制执行文件替代apk实现程序功能 实现将data/Android ...

  3. bzoj4668: 冷战 并查集按秩合并

    题目链接 bzoj4668: 冷战 题解 按秩合并并查集,每次增长都是小集合倍数的两倍以上,层数不超过logn 查询路径最大值 LCT同解 代码 #include<bits/stdc++.h&g ...

  4. [BZOJ4557][JLOI2016]侦察守卫(树形DP)

    首先可以确定是树形DP,但这里存在跨子树的信息传递问题,这里就需要“借”的思想. f[i][j]表示i子树内所有点都被覆盖到,且i以外j层内的点都能被覆盖到 的方案数. g[i][j]表示i子树内离i ...

  5. 【20181102T2】飞越行星带【智商题+最小瓶颈路】

    题面 [正解] 一眼不可做啊 --相当于求路线上穿过的点最小距离最大 最小最大--二分啊 现在相当于给一个直径,要判断这个直径是否能从左边穿到右边 我们可以在距离不超过直径的点连一条边,\(y=0\) ...

  6. bzoj 3837 (随机过题法了解一下)

    3837: [Pa2013]Filary Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 395  Solved: 74[Submit][Status] ...

  7. Codeforces Round #254 (Div. 1) A. DZY Loves Physics 智力题

    A. DZY Loves Physics 题目连接: http://codeforces.com/contest/444/problem/A Description DZY loves Physics ...

  8. 编写简单登陆和注册功能的demo时遇到的问题

    一.注册功能中添加数据不成功 给数据库添加EditText中的内容后,数据库中找不到添加后的数据,并且存在字符串为空的数据 解决方法:EditText registerAccount = (EditT ...

  9. 精简高效CSS系列之二——浮动float

    一.浮动基础知识 假如一个页面上有3个div块,如下排列: 图1:不使用浮动 图2:向右浮动 图2说明了框1脱离了文档流向右移动,直到它的右边缘碰到包含框的右边缘为止. 图3:向左浮动 图3说明了框1 ...

  10. Scramble String -- LeetCode

    原题链接: http://oj.leetcode.com/problems/scramble-string/  这道题看起来是比較复杂的,假设用brute force,每次做分割,然后递归求解,是一个 ...