博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mongo DB分片
阅读量:5147 次
发布时间:2019-06-13

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

分片,指的就是把数据拆分,将其分散到不同机器上的过程。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 30001

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

 

启动mongos进程

./mongos --configdb localhost:30001,localhost:30002,localhost:30003 --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});

 

 

删除分片

通常来说,不应从集群中删除分片,即使加多了,也可以留在那儿,以后会用得上,如果非要删除分片的话,可以按照如下操作:
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

 

转载于:https://www.cnblogs.com/xiaoliangup/p/9545103.html

你可能感兴趣的文章
Codeforces Round #277 (Div. 2)
查看>>
一步步学Mybatis-搭建最简单的开发环境-开篇(1)
查看>>
微信小程序图片上传
查看>>
【更新】智能手机批量添加联系人
查看>>
NYOJ-128前缀式计算
查看>>
centos6.7 配置外网端口映射
查看>>
淡定,啊。数据唯一性
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>
Hive(7)-基本查询语句
查看>>
Redis快速入门
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
inline函数的总结
查看>>
【Jquery】$.Deferred 对象
查看>>
Python字符编码
查看>>
leetcode 49. 字母异位词分组(Group Anagrams)
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
财务结算的目的和一般流程
查看>>
判断字符串是否为空的注意事项
查看>>