`

[实验]MongoDB Replication ReplSet Shard总结

 
阅读更多

最近在做mongoDB的一些配置 也就玩玩的 照着已有事例做的

这里就总结一下做的过程 顺便就当做个人的笔记了 内容不怎么好 做完之后的简单总结 需要的可以看看

哪里有错希望能提出 谢谢^_^

 

笔记中的 --参数 都是在mongod时使用.

 

一份通用的配置文件 笔记中记录用:

使用直接用 mongod -f 配置文件位置

 

#日志存放位置
logpath=/cc/mongodb/log/mongodb.log
#数据库文件位置
dbpath=/cc/data/master
#每次启动覆盖日志,true为不覆盖
logappend=false
#不打印CPU详细信息
cpu=false 
journal=true
journalCommitInterval=100
rest=true
#以守护进程启动
fork=true
auth=false
#不添加新建一个会占用4G左右 添加这个参数占用会变小
smallfiles=true
port=27017

 更多参数请看:http://www.cnblogs.com/WilliamWang/archive/2012/10/20/configuration-options.html

 

 

Replication



 

 

简单点说是主从节点的复制

存在一个master node和一些slave node

master node可以做增删改查的操作 而slave node只能做查找 实际应用的时候就可以用多个从节点做读的负载

 

主从节点建立:

 

1、建立启动主节点:

--master(表示主节点)

--port 端口(port可以记录在配置文件里)

 

2、建立启动从节点:

--port 确定个端口(在同一台机子上别弄重了) 

--slave(表示从节点)

--source 指向主节点(本机的话localhost:主节点端口)

查看复制情况:

db.printReplicationInfo()

 

 

 

ReplSet:



 

副本集里 没有主从之分

由一个活动节点和N个备份节点组成

一旦活动节点挂了 备份节点中会选取一个接管活动节点(成为新的活动节点)

 

创建(还是一样 同机上多节点 --port 要不一样 可以在配置文件中指定):

1、建立节点并为副本集取名

     --replSet 名字(同一副本集的节点名要相同)

 

2、初始化

初始化命令只执行一次:

mongo 进入对应的节点(随便进入哪一个都行 地位是平等的)

参数={"_id":"副本集名称(和--replSet的名字相同)",members:[{_id:0,host:"127.0.0.1:1111"},{_id:1,host:"127.0.0.1:2222"},....]}

用rs.initiate(参数)

查看状态 rs.status()

 

备份节点无法查询和其他操作 因为不是活动节点 不提供服务

节点类型:

standard:常规节点 有数据副本 可以参与投票 可以成为活动节点

passive:有数据副本 参与投票 但不能成为活跃节点

arbiter:只参与投票 不接受复制数据  不能成为活跃节点

 

 

 

 

Shard:



 (图中的node 取名叫s1纯粹是乱起 叫 node1 也行 s没有任何意思 请不要在意)

分片:将数据拆分,将其分散到不同机器上的过程

mongodb支持自动分片

片键的选择(该键值作为数据拆分的依据)

 

建立分片:

1、选片键

2、建立并启动分片节点(mongod)

3、创建并启动配置服务器(configdb 就是一个node 和普通node建立无差别)

4、启动mongos路由进程(用mongos)

5、添加分片(详见以下的)

(生产环境至少多个mongos 3个配置服务器  开发时各用一个就够了)

 

第4步过程:

mongos --port XXXX --configdb localhost:port(对应的configdb的ip和端口)

添加:登陆到mongos上添加(用mongo --port mongos的端口)

注意要先 use admin 不然命令执行也许会有错误

db.runCommand({addshard:"地址:端口",allowLocal:true})

启动分片功能:

db.runCommand({"enablesharding":"数据库名"})

启动片键:

db.runCommand({"shardcollection":"数据库名.集合名",key:{"userName":1}}) 

使用时连接mongos所在端口

各个切片(Shard都可以读写数据 在mongos上都可以查到各个分片的数据) 

  • 大小: 4.8 KB
  • 大小: 5 KB
  • 大小: 7.2 KB
2
4
分享到:
评论
2 楼 fair_jm 2013-08-22  
shingo7 写道
图画的有点不对劲,或者说有歧义

嗯 嗯 哪一个? 这图是从一个视频教程里面照着画的 用的是staruml的部署图
1 楼 shingo7 2013-08-22  
图画的有点不对劲,或者说有歧义

相关推荐

    mongodb3.2集群配置

    - `Shard`实例日志目录:`/opt/mongodb/log/shard` - `Shard`实例数据目录: - `/opt/mongodb/data/shard1` - `/opt/mongodb/data/shard2` - `/opt/mongodb/data/shard3` 3. **关闭防火墙**: - 使用命令`...

    MongoDB简介与实践.pdf

    总结来说,MongoDB作为一种NoSQL数据库,它在处理大规模数据和高并发读写时显示出其特有的优势和灵活性。用户可以根据实际需求,灵活地选择使用关系型数据库还是NoSQL数据库,或者将两者结合使用,构建复杂的数据...

    真实可用的mongodb下周地址.txt

    视频目录: 01-mongodb文档型数据库特点介绍 01-NoSQL简介 02-mongodb安装过程 02-mongodb操作1 03-mongodb操作2 ...10-replication复制集 10-主从复制 11-shard分片 11-分片 12-使用java操作mongodb

    MongoDB内核源码分布式事务介绍.pdf

    Replication 与 Raft 协议是 MongoDB 的一种分布式一致性协议,用于解决分布式系统中的leader选举和数据复制问题。 Raft 论文 Raft 论文是 MongoDB 的一种分布式一致性协议的论文,用于解决分布式系统中的leader...

    MongoDB新技术特性与展望.pptx

    - **数据分布与复制**:MongoDB支持跨地区复制(如Atlas Cross Region Replication)和自动存储扩展,保证数据的安全性和可用性。 - **多文档ACID事务**:从4.0版本开始,MongoDB支持多文档的ACID事务,增强了...

    MongoDB 24 道面试题及答案.docx

    分片可能是单一的服务器或者集群组成,数据在什么时候才会扩展到多个分片(shard)里?MongoDB的分片是基于区域的,所以一个集合的所有对象都放置在同一个块中,只有当存在多余一个块的时候,才会有多个分片。 获取...

    mongodb-linux-x86-64-rhel70-4.2.18安装包

    MongoDB是一种流行的开源、分布式文档数据库,用于处理大量的结构化和非结构化数据。它以其高性能、高可用性和可伸缩性而闻名。在Linux环境下,特别是RHEL 7.0(Red Hat Enterprise Linux 7.0)系统上安装MongoDB ...

    MongoDB原生高可用及分布式能力解析.pdf

    MongoDB 提供了原生的高可用性和分布式功能,包括多副本(Replication)和分片集群(Sharding)等机制,以满足大规模数据存储和处理的需求。 1. MongoDB 原生高可用能力 - **多副本(Replication)**:MongoDB 的...

    Mongodb启动命令参数中文说明

    ./mongod -shardsvr -replSet shard1 -port 16161 -dbpath /data/mongodb/data/shard1a -oplogSize 100 -logpath /data/mongodb/logs/shard1.log ``` 理解并正确使用这些参数有助于管理和优化 MongoDB 实例,确保...

    Mongodb增加、移除Arbiter节点实例

    MongoDB 是一个高性能、分布式、开源的文档型数据库系统,被广泛用于构建现代应用程序。在 MongoDB 集群中,Arbiter 节点扮演着重要的角色,它不存储数据,但参与选举过程,帮助确定主节点。本文将详细讨论如何在 ...

    MongDB测试文档.pdf

    6. **Shard Servers(分片服务器)**和**Config Servers(配置服务器)**:分片集群中,分片服务器用于存储实际的数据,而配置服务器负责存储集群的元数据和配置信息。 7. **mongos(查询路由器)**:mongos作为...

    分布式系统数据库服务器

    C#可以通过自定义逻辑或使用开源库如MongoDB的Shard Router实现数据分片。 2. **复制(Replication)**:确保数据的冗余和容错,通常采用主从复制或多主复制策略。C#可以借助SQL Server的AlwaysOn Availability ...

Global site tag (gtag.js) - Google Analytics