MongoDB分片
在MongoDB里面存在另一种集群,就是分片技术,可以满足MongoDB数据大量增长的需求。
当MongoDB存储海量数据的时候,一台机器可能不足以存储数据,也不足以提供可接受的读写吞吐量。这是,我们需要通过在多台机器上分割数据,使得数据库系统能存储和处理更多数据。
为什么使用分片技术
- 复制所有的写入操作到主节点
- 延迟敏感数据会在主节点查询
- 单个副本集限制在12个节点
- 当请求量巨大时会出现内存不足
- 本地磁盘不足
- 垂直扩展价格高
MongoDB分片
下图展示了在MongoDB中使用分片集群结构分布:
上图中主要有如下所述三个主要组件:
- Shard:用于存储实际的数据块,实际生产环境中有一个shard server角色可由几台机器组一个replica set承担,防止主机单点故障
- Config Server:mongod实例,存储了整个ClusterMetadata,其中包括chunk信息
- Query Routers:前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
实例
MongoDB备份(mongodump)与恢复(mongorestore)
数据备份
在MongoDB中我们使用mongodump命令来备份MongoDB数据,该命令可以导出所有数据到指定目录中。
mongodump命令可以通过参数指定导出的数据量级转存的服务器。
语法
1 | mongodump -h dbhost -d dbname -o dbdirectory |
实例
在当前目录下,新建终端,备份到当前目录
1 | luoyecs-iMac:~ LW-luoyec$ mongodump |
mongodump 命令可选参数列表如下所示:
数据恢复
mongodb使用mongorestore命令来恢复备份到数据。
语法
1 | >mongorestore -h <hostname><:port> -d dbname <path> |
实例
1 | >mongorestore |
执行以上命令输出结果如下: