您的位置:首页 > 数据库 > Mongodb

MongoDB学习笔记(五)--复制集 && sharding分片

2014-02-26 14:14 501 查看
主从复制

主从节点开启

主节点的设置,只需要在某一个服务启动时加上 –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学习笔记(四)--索引 && 性能优化传送门 /article/4843625.html

MongoDB学习笔记(六)--复制集+sharding分片 && 总结传送门 /article/4843627.html

转载请注明出处:/article/4843626.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: