mongo介绍
特性
- 高性能
- 丰富的查询语言
- 高可用
- 水平伸缩
- 支持多种存储引擎
分片集群四个组件
mongos
数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把对应的数据请求请求转发到对应的shard服务器上。在生产环境通常有多mongos作为请求的入口,防止其中一个挂掉所有的mongodb请求都没有办法操作。
config server
配置服务器,存储所有数据库元信息(路由、分片)的配置。mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据。mongos第一次启动或者关掉重启就会从 config server 加载配置信息,以后如果配置服务器信息变化会通知到所有的 mongos 更新自己的状态,这样 mongos 就能继续准确路由。在生产环境通常有多个 config server 配置服务器,因为它存储了分片路由的元数据,防止数据丢失!
shard
分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移)。
replia set
shard的备份,防止shard挂掉之后数据丢失。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。
问题总结
在admin库中创建用户报
Error: couldn't add user: Use of SCRAM-SHA-256 requires undigested passwords
解决方法:
使用如下脚本创建用户12345678db.createUser({user: "username",pwd: "password",roles: [{role:"root",db:"admin"}],mechanisms: ["SCRAM-SHA-1"]});启动mongo报错
WiredTiger.wt: handle-open: open: No such file or directory
解决方法:删除掉dbPath目录, 然后重启mongo
如果获取超过101条记录,mongodb不会一次性全部load并返回给client,每次只返回batchsize条记录,遍历完之后再通过网络获取。
Official Go Driver
代码示例
|
|
参考链接
Mac mongo 可视化客户端 Robo 3T
MongoDB官方文档
Mongodb 与 MySQL性能对比
mongodb副本集加分片集群安全认证使用账号密码登录
mongodb 3.4 集群搭建:分片+副本集
MongoDB认证和授权详解
MongoDB 分片集群技术
Mongodb 教程
What is the difference between readPreference and readConcern in MongoDB?
mongodb 3.4与 mongodb 3.2性能对比