博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB分片+复制集
阅读量:5929 次
发布时间:2019-06-19

本文共 2758 字,大约阅读时间需要 9 分钟。

1. 简介

MongoDB 基本NoSQL的大数据数据存储工具,内部数据以文档的概念存储BSON(Binary JSON)。

所有的数据存储概念均离不开“分片”(数据的横向扩展,以分离存储的方式提高数据存储、检索的性能)、“复制”(高可用,包含冗余备份、故障自检、自动恢复、读写分离等功能)。
本文不会详细介绍MongoDB基础及分布概念,读者可以自行查阅学习。

2. 实战

2.1 版本信息

2.1.1 系统版本

# uname -aLinux 1ddc8b08470a 4.9.49-moby #1 SMP Thu Sep 21 05:50:41 UTC 2017 x86_64 GNU/Linux

2.1.2 MongoDB版本

# mongo -versionMongoDB shell version v3.4.10git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9OpenSSL version: OpenSSL 1.0.1t  3 May 2016allocator: tcmallocmodules: nonebuild environment:    distmod: debian81    distarch: x86_64    target_arch: x86_64

2.2 创建Sharding复制集 rs0

# mkdir /data/log# mkdir /data/db1# nohup mongod --port 27020 --dbpath=/data/db1 --logpath=/data/log/rs0-1.log --logappend --fork --shardsvr --replSet=rs0 &# mkdir /data/db2# nohup mongod --port 27021 --dbpath=/data/db2 --logpath=/data/log/rs0-2.log --logappend --fork --shardsvr --replSet=rs0 &

2.3 复制集rs0配置

# mongo localhost:27020> rs.initiate({_id: 'rs0', members: [{_id: 0, host: 'localhost:27020'}, {_id: 1, host: 'localhost:27021'}]})> rs.isMaster()  #查看主从关系

2.4 创建Sharding复制集 rs1

# mkdir /data/db3# nohup mongod --port 27030 --dbpath=/data/db3 --logpath=/data/log/rs1-1.log --logappend --fork --shardsvr --replSet=rs1 &# mkdir /data/db4# nohup mongod --port 27031 --dbpath=/data/db4 --logpath=/data/log/rs1-2.log --logappend --fork --shardsvr --replSet=rs1 &

2.5 复制集rs1配置

# mongo localhost:27030> rs.initiate({_id: 'rs1', members: [{_id: 0, host: 'localhost:27030'}, {_id: 1, host: 'localhost:27031'}]})> rs.isMaster() #查看主从关系

2.6 创建Config复制集 conf

# mkdir /data/conf1# nohup mongod --port 27100 --dbpath=/data/conf1 --logpath=/data/log/conf-1.log --logappend --fork --configsvr --replSet=conf &# mkdir /data/conf2# nohup mongod --port 27101 --dbpath=/data/conf2 --logpath=/data/log/conf-2.log --logappend --fork --configsvr --replSet=conf &

2.7 复制集conf配置

# mongo localhost:27100> rs.initiate({_id: 'conf', members: [{_id: 0, host: 'localhost:27100'}, {_id: 1, host: 'localhost:27101'}]})> rs.isMaster() #查看主从关系

2.8 创建Route

# nohup mongos --port 40000 --configdb conf/localhost:27100,localhost:27101 --fork --logpath=/data/log/route.log --logappend &

2.9 设置分片

# mongo localhost:40000> use admin> db.runCommand({ addshard: 'rs0/localhost:27020,localhost:27021'})> db.runCommand({ addshard: 'rs1/localhost:27030,localhost:27031'})> db.runCommand({ enablesharding: 'test'})> db.runCommand({ shardcollection: 'test.user', key: {name: 1}})

通过以上步骤操作,便可以直接连接 40000端口的mongdos享用分片及复制功能。

3. 总结

基本大数据分布式背景而生的产品,在分布式集群配置上还是很简单方便的。这里仅仅是一个基本的操作演示,更多的功能还需要读者去深入了解。

  1. 首先配置了两个Sharding,并赋予了它们复制的能力。
  2. 然后配置了Configdb配置管理,同样必须要有复制集功能。
  3. 最后是路由Route的配置,并在Route启动时中指定了Configdb,又在其中添加了之前配置的Sharding。
  4. 客房端只需要连接Route就可以透明地享用分片及复制带来了高性能、高可用。Note: 如果单独连接Sharding产生的数据并不会反应在Route中。

4. 参考:

  • [1].

转载地址:http://toevx.baihongyu.com/

你可能感兴趣的文章
设置归档
查看>>
选择--成就梦想----选择百姓通谱网让您在尽孝的过程中实现自我价值---打造真正的---幸福家庭...
查看>>
移动终端高级开发工程师
查看>>
resolv.conf 信息丢失
查看>>
我的友情链接
查看>>
(1)nginx 作为web的缓存服务器案例
查看>>
LVM的创建和管理
查看>>
删除、恢复wscript.shell
查看>>
screen基本用法
查看>>
linux简单使用
查看>>
方法的重写
查看>>
JSP知识点总结
查看>>
每一个人
查看>>
网络管理员-自学C#编程之SQL命令
查看>>
多线程之死锁
查看>>
ios媒体视频播放器应用项目
查看>>
一个例子探究jQuery的Ajax应用(二)
查看>>
win8 mysqlzip install
查看>>
File Screen 预防 Cryptowall 病毒
查看>>
Python 学习笔记 - RabbitMQ
查看>>