mongodb二(命令行操作)

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
2
3
4
>mongodump -h dbhost -d dbname -o dbdirectory
//-h:mongoDB所在服务器地址,如127.0.0.1,也可以指定端口号:127.0.0.1:27017
//-d:需要备份的数据库实例,例如test
//-o:备份的出局存放位置,例如: c:\data\dump ,当然该目录需要提前建立,当备份完成后,系统会在dump目录下件一个test目录,这个目录里存放该数据库实例的备份数据

实例

在当前目录下,新建终端,备份到当前目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
luoyecs-iMac:~ LW-luoyec$ mongodump
2017-07-26T05:11:32.736+0800 writing admin.system.version to
2017-07-26T05:11:32.739+0800 done dumping admin.system.version (1 document)
2017-07-26T05:11:32.739+0800 writing test.fruits to
2017-07-26T05:11:32.739+0800 writing test.user to
2017-07-26T05:11:32.740+0800 writing test.meterial to
2017-07-26T05:11:32.740+0800 writing test.col to
2017-07-26T05:11:32.740+0800 done dumping test.user (2 documents)
2017-07-26T05:11:32.740+0800 writing movie.的 to
2017-07-26T05:11:32.740+0800 done dumping test.fruits (7 documents)
2017-07-26T05:11:32.740+0800 writing test.values to
2017-07-26T05:11:32.741+0800 done dumping test.meterial (1 document)
2017-07-26T05:11:32.741+0800 done dumping test.col (3 documents)
2017-07-26T05:11:32.741+0800 done dumping movie.的 (0 documents)
2017-07-26T05:11:32.741+0800 done dumping test.values (0 documents)

mongodump 命令可选参数列表如下所示:
enter description here

数据恢复

mongodb使用mongorestore命令来恢复备份到数据。

语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>mongorestore -h <hostname><:port> -d dbname <path>
/*
--host <:port>, -h <:port>:
MongoDB所在服务器地址,默认为: localhost:27017
--db , -d :
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
--drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
<path>:
mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。
你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。
--dir:
指定备份的目录
你不能同时指定 <path> 和 --dir 选项。
*/

实例

1
>mongorestore

执行以上命令输出结果如下:
enter description here