您现在的位置是:主页 > news > 淘客做网站有必要吗/百度知道答题赚钱
淘客做网站有必要吗/百度知道答题赚钱
admin2025/5/14 23:47:01【news】
简介淘客做网站有必要吗,百度知道答题赚钱,网站做聚合是啥意思,欧米伽官方网站手表价格进行分片,只要启动一下mongos进程即可。 不分片的时候,是客户端直接连接mongod进行数据的查找。进行分别后,客户端会先连接到mongos,然后mongos会连接每个进行了分片的mongod进行数据查找。 考虑分片的情况 1.机器的磁盘不够用了 …
进行分片,只要启动一下mongos进程即可。
不分片的时候,是客户端直接连接mongod进行数据的查找。进行分别后,客户端会先连接到mongos,然后mongos会连接每个进行了分片的mongod进行数据查找。
考虑分片的情况
1.机器的磁盘不够用了
2.单个mongod已经不能满足写数据的性能需要了。
3.想将大量的数据放在内存中提高性能。
4.一般来说,先从不分片开始,然后在需要的时候将其转换成分片。
片键
在设置分片的时候,需要从集合里面选一个键,用该键的值作为数据拆分的依据。
例如我有个文档集合表示人员,如果选择名字(name)为片键,则第一片可以是存放A~F开头的文档,第二片存放G~P的文档.....
建立分片
建立分片只有两步:启动实际的服务器,然后决定怎么切分数据。
分片一般有3个组成部分:
1.片
2.Mongos
3.配置服务器
首先启动配置服务器和mongos
配置服务器需要先启动,因为mongos会用到配置信息。配置服务器的启动就像普通的mongod一样。
$
$
建立mongos进程,这种路由服务器连接数据目录都不需要,但一定要指明配置服务器的位置。
$
添加片
片就是普通的mongod实例(或者副本集),现在我们添加一个片
$
$
现在连接刚才启动的mongos,为集群添加一个片。启动shell,连接mongos
$
>
"addshard" : "localhost:10000",
"allowLocal" : true
})
当在localhost上运行片时,得设定allowLocal键。
切分数据
MongoDB不会将存储的每一条数据都直接发布,得先在数据库和集合的级别将分片功能打开。下面例子我们以"_id"为基准切分foo数据库的bar集合。
首先开启数据库foo的分片功能:
>db.runCommand({"enablesharding":"foo"})
然后开启集合bar的分片功能并以_id为片键
>db.runCommand({
"shardcollection":"foo.bar",
"key":{"_id":1}
})
生产配置(正式环境配置)
成功地构建分片需要如下条件:
1.多个配置服务器
2.多个mongos服务器
3.每个片都是副本集
4.正确设置w
多个配置服务器
创建配置服务器如上,现在启动mongos的时候应将其连接到这3个配置服务器。假如3个配置文件的端口号是20001~2003
$
配置服务器使用的是两步提交机制,不是普通的MongoDB的异步复制,来维护集群配置的不同副本。这样能保证集群状态的一致性。这意味着某台配置服务器宕掉了后,集群配置信息将是只读的。但是客户端还是能够读写的,只有所有配置服务器备份了以后才能重新均衡数据。
多个mongos
Mongos的数量不受限制,建议针对一个应用服务器只运行一个mongos进程。这样每个应用服务器就可以与mongos进行本地会话。
健壮的片
生产环境中,每个片都应是副本集。这样单个服务器坏了,就不会导致整个片失效。用addshard命令就可以讲副本集作为片添加,添加时只要指定副本集的名字和种子就好了。
例如现在添加副本集foo,其中包含一个服务器xiaozhe.com:27017(还有别的服务器),就可以使用下列命令将其添加到集群里。
>db.runCommand({"addshard":"foo/xiaozhe.com:27017"})
如果xiaozhe.com挂了,则mongos会知道它所连接的是哪个副本集,并去寻找新的主节点。
管理分片
分片的信息主要存放在config数据库上,这样就能被任何连接到mongos的进程访问到了。
配置集合
下面的代码都假设已经在shell中连接了mongos,并且已经运行了use
1.片
可以在shards集合中查到所有的片
2.数据库
databases集合含有已经在片上的数据库列表和一些相关信息。
>db.databases.find()
"_id"
"partitioned"
"primary"
3.块
块信息保存在chunks集合中,你可以看到数据到底是怎么切分到集群的。
>db.chunks.find()
分片命令
1.获得概要
>db.printShardingStatus()
2.删除片
用removeshard就能从集群中删除片,removeshard会把给定片上的所有块都挪到其他片上。
>db.runCommand({"removeshard":"localhost:10000"})