分片,指的就是把数据拆分,将其分散到不同机器上的过程。MongoDB支持自动分片,对应用而言,好像始终和一个单机的服务器交互一样。

分片和复制
复制是让多台服务器拥有相同的数据副本,而分片是每个分片都拥有整个数据集的一个子集,且相互是不同的数据,多个分片的数据合起来构成整个数据集。

配置服务器

配置服务器就是普通的mongod服务器,保存整个集群和分片的元数据:集群中有哪些分片,分片的是哪些集合,以及数据块的分布。它极其重要,必须启用日志功能。

在大型的集群中,建议配置3台配置服务器,就足够用了。启动配置服务器的方式:

1、先创建几个存放数据的文件夹,比如在前面的dbs下面创建confdb文件夹,然后在confdb下面创建confdb1,confdb2,confdb3文件夹;
同理在前面的logs下面创建conflogs文件夹

2、然后分别启动这三个配置服务器,使用—configsvr指明是配置服务器,如下:

./mongod --configsvr --dbpath ../dbs/confdb1 --logpath ../logs/conflogs/conflog1 --fork --port 

3、--configsvr默认的端口为27019,默认的数据目录为/data/configdb,可以使用--dbpath 和--port自己定义。

启动mongos进程

./mongos --configdb localhost:,localhost:,localhost: --logpath ../logs/conflogs/mongoslog --fork

将副本集转换成为分片

4、如果没有副本集,按照前面讲的创建并初始化一个;如果有一个副本集,就打开相应的服务器,把副本集运行起来

5、连接到mongos,use admin 也就是切换到使用admin的数据库

6、把副本集转换成为分片,不用把所有副本集的成员都写出来,mongos会自动检查整个副本集

sh.addShard("myrepl/127.0.0.1:20001");

7、使用sh.status() 察看状态,

8、重复步骤,创建一个新的副本集,加入到分片中来。

数据分片

9、对数据库启用分片

sh.enableSharding(“数据库名”);

10、然后指定分片的集合,还有分片的键,如果对已经存在的集合进行分片,那么指定的这个
分片键上必须有索引;如果集合不存在,mongos会自动在分片键上创建索引。例如:

sh.shardCollection("rep1.users",{"userId":});

删除分片
通常来说,不应从集群中删除分片,即使加多了,也可以留在那儿,以后会用得上,如果非要删除分片的话,可以按照如下操作:
1、首先保证均衡器是打开的,因为删除分片的时候,均衡器会负责将待删除分片的数据迁移至其它分片
2、执行removeShard命令,示例如下:
use admin 最好切换到mongos的admin数据库再操作,然后:

db.runCommand({"removeShard":"myrep2"});

如需要查看删除情况,再次执行上一条命令,直到remaining的chunks为0。
3、所有块完成转移过后,如果仍有数据库将该分片作为主分片,需要在删除分片前将这
些数据库移除掉,通常会提示:“note” : “you need to drop or movePrimary these databases”,示例如下:

db.adminCommand({"movePrimary":"mydb2","to":"myrep1"});

4:然后再次执行removeShard命令,直到状态显示completed

最新文章

  1. JQuery 阻止js事件冒泡 阻止浏览器默认操作
  2. inotify+rsync目录实时同步
  3. 理解extern
  4. hadoop namenode -format Couldn'tload main class "-Djava.library.path=.home.hadoop.hadoop-2.5.2.lib"
  5. 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)
  6. 牛客小白月赛12 I (tarjan求割边)
  7. html5 canvas 径向渐变2
  8. 线程池框架executor
  9. Websphere设置JVM时区解决程序、日志时间快8小时问题
  10. create session 参数介绍
  11. 学习ThinkPHP笔记
  12. 【连接查询】mySql多表连接查询与union与union all用法
  13. 笔记本wifi热点设置好后,手机连上但不能上网问题
  14. MySQL的binlog日志恢复(转)
  15. JAVA 中的IO流
  16. CSS3及JS简单实现选项卡效果(适配手机端和pc端)
  17. 【题解】Casting Spells LA 4975 UVa 1470 双倍回文 SDOI 2011 BZOJ 2342 Manacher
  18. [翻译]创建ASP.NET WebApi RESTful 服务(11)
  19. nginx 反向代理导致的session丢失的问题
  20. python pdb 基础调试

热门文章

  1. LeetCode 第 153 场周赛
  2. 分布式文件上传 spring boot + fastdfs + dropzone
  3. 工具类_JavaPOI_Office文件内容读取
  4. apache配置https重定向
  5. 转录调控 | Transcriptional Regulation | Regulon
  6. SQL优化 | Oracle 绑定变量
  7. Somatic hypermutation (or SHM) is a cellular mechanism by which the immune system adapts to the new foreign elements that confront it (e.g. microbes), as seen during class switching. Somatic hypermut
  8. NetHogs监控Linux的每个进程流量
  9. 使用Lock对象实现同步效果
  10. bat批处理 查找替换:批处理如何查找并替换文本里特定字符串中的部分内容