MongoDB发布了连接现有的数据可视化以及BI应用的连接

shutterstock_130139699

 

开源的数据库平台mongoDB今天(美国时间2015-06-02)在纽约举行的其公司举行的MongoDB World发布会上,发表了一些升级内容。其中,就包含了Tableau等数据可视化工具的整合。

负责MongoDB发展方向的VP Kelly Stirman说:MongoDB与一直以来的RDB不同,有着可以处理非典型数据的自由性,所以如今很多企业的应用中都在利用。这也是大家使用MongoDB的重要原因之一,但至此,所使用的数据可视化工具处理非典型数据都非常困难。

他还说,大家都说这些应用很先进,是因为这些应用使用了以往的行(row)与列(column)的数据库无法处理的丰富的数据结构。

因此,为了处理这些愈发先进的MongoDB所带来的无法预测的结果,其公司就发表了可以连接BI(business intelligence)以及数据可视化工具的连接,同时介绍了公司的合作伙伴Tableau,并说明了,其他工具也能同样地这样连接。

 

Tableau虽然是本公司的合作伙伴,但连接是IBM的Cognos以及SAP的BusinessObjects、Microsoft Excel等等,也有与其他工具之间的互换性,所以几乎可以处理所有情况。

 

Stirman然后还说,几百万的用户每天都在使用这些应用,但至此都是MongoDB没有接触到的领域。因此,今天发布的新连接,就会成为两个世界的桥梁。

 

他还说:“至此,要用现有的数据可视化工具处理MongoDB以及数据,需要在编程上耗费大量心力,因此时间与资金的成本都很庞大。但是,只要使用连接的话,现有的可视化工具,就不需要其中的layer了,于是就可以访问MongoDB的数据了。“

 

同样地发布会还在Salesforce.com上举行过,但那次与这次的案例相反,是通过Salesforce的可视化工具wave将外部数据与Salesforce的数据同时进行可视化的连接

与MongoDB的情况相同,至此如果在编程上煞费苦心的话,就可以用wave观察外部数据。并且,Salesforce这次也与MongoDB相同,终于领悟了。要实现与外部顺利连接还是要靠Bender自身这一点。两个公司同时制成的连接,就可以使得数据库与可视化工具之间的数据迁移以及数据访问更加方便。

MongoDB3.2中,除了连接还有REST相应的密码化以及为了数据库管理员,会导入GUI。这方面的内容预计会在今年的第四季度公开。

MongoDB至此引起了风投们极大的注意,大约收集到了3亿美元左右的资金。就是最近一段时间,仅仅是今年一月就获得8000万美元。

 

 

C100DBA MongoDB DBA认证考题讲解 FsyncLock() command

单选题

Which of the following is true after the fsyncLock() command is run ( before fsyncUnlock() is run)?

  1. Writes to the database may succeed
  2. Writes to the database may return an error.
  3. All reads on the database will return an error
  4. Reads on the database may succeed
  5. Profiling will continue .

 

db.fsyncLock()

Forces the mongod to flush all pending write operations to the disk and locks the entire mongodinstance to prevent additional writes until the user releases the lock with the db.fsyncUnlock()command. db.fsyncLock() is an administrative command.

 

 

https://docs.mongodb.org/v3.0/reference/method/db.fsyncLock/

 

db.fsyncLock()应当是锁定 mongod实例使其不再接受任何写操作,

 

 

MongoDB shell version: 2.6.7

connecting to: test

> db.fsyncLock();

{

“info” : “now locked against writes, use db.fsyncUnlock() to unlock”,

“seeAlso” : “http://dochub.mongodb.org/core/fsynccommand”,

“ok” : 1

}

 

 

 

 

 

 

在其他session中操作读和写均被阻塞

 

 

> db.dbdao.find();

> db.dbdao.insert({A:1});

 

 

 

文档中的解释是:db.fsyncLock() may block reads, including those necessary to verify authentication. Such reads are necessary to establish new connections to a mongod that enforces authorization checks.

所以db.fsyncLock() 后可能会阻塞读,但不是100%阻塞。  注意这里仅仅是阻塞 所以不会有报错,所以  return an error.的答案全错。

 

所以 答案D Reads on the database may succeed  正确。

 

 

 

C100DBA MongoDB DBA认证考题讲解 Replica set secondary oplog elect

本文永久链接地址:http://www.askmaclean.com/archives/c100dba-mongodb-dba%e8%ae%a4%e8%af%81%e8%80%83%e9%a2%98%e8%ae%b2%e8%a7%a3-replica-set-secondary-oplog-elect.html

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

MongoDB技术学习QQ群: 421431253

 

此题为单选题

 

Screen Shot 2015-04-28 at 10.45.40 PM

Given a Replica Set with five data-bearing members , suppose the primary goes down with operations in its oplog that have been copied to only one secondary.

 

Assuming no other problem occurs, which of the following describes what is most likely to happen?

 

  • The primary will rollback the operations once it recovers
  • The secondary with the most current oplog will be  elected primary
  • Missing operations will need to be manually added
  • The most current secondary will not rollback the operations following the election .
  • Reads will be stale until the primary comes back up.

 

 

  • The primary will rollback the operations once it recovers 是错误的因为 A rollback reverts write operations on a former primary when the member rejoins its replica set after a failover. A rollback is necessary only if the primary had accepted write operations that the secondaries had not successfully replicated before the primary stepped down.

 

If a higher-priority member catches up to within 10 seconds of the latest oplog entry of the current primary, the set holds an election in order to provide the higher-priority node a chance to become primary.

高优先级的且oplog延迟不超过10秒的节点成员有机会让replica set做election 使其成为primary。

答案应为

  • The most current secondary will not rollback the operations following the election .

 

C100DBA MongoDB DBA认证考题讲解 Journal日志的存放

本文永久链接:http://www.askmaclean.com/archives/mongodb-journal.html

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

MongoDB技术学习QQ群: 421431253

C100DBA MongoDB DBA认证考题讲解 Journal日志的存放

 

Screen Shot 2015-04-28 at 10.44.03 PM

 

Why might you want to put your journal on a separate drive on your primary?

在你的主库上是什么驱动你去把journal日志存放在一个分离(与db文件分离)的磁盘上?

  1. 允许使用文件系统快照备份
  2. 为了改善写出吞吐量
  3. 提供更好的故障容错
  4. 消除对secondary服务器的需求
  5. 增加oplog的窗口

此为单选题, 答案为B 为了改善写出吞吐量

参考:https://docs.mongodb.org/manual/core/write-performance/

Journaling

MongoDB uses write ahead logging to an on-disk journal to guarantee write operation durability and to provide crash resiliency. Before applying a change to the data files, MongoDB writes the change operation to the journal.

While the durability assurance provided by the journal typically outweigh the performance costs of the additional write operations, consider the following interactions between the journal and performance:

  • if the journal and the data file reside on the same block device, the data files and the journal may have to contend for a finite number of available write operations. Moving the journal to a separate device may increase the capacity for write operations.
  • if applications specify write concern that includes journaled, mongod will decrease the duration between journal commits, which can increases the overall write load.
  • the duration between journal commits is configurable using the commitIntervalMs run-time option. Decreasing the period between journal commits will increase the number of write operations, which can limit MongoDB’s capacity for write operations. Increasing the amount of time between commits may decrease the total number of write operation, but also increases the chance that the journal will not record a write operation in the event of a failure.

 

C100DBA MongoDB DBA认证考题讲解 mongodump command

C100DBA MongoDB DBA认证考题讲解 mongodump command

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

MongoDB技术学习QQ群: 421431253

 

Screen Shot 2015-04-28 at 10.46.18 PM

 

 

Which of the following are true about the mongodump command ?

  1. Can backup data by connecting to a running mongos or mongod server
  2. Can backup data using only the data files for a MongoDB database
  3. Writes data in either BSON or JSON format

此为多选题

答案为 A

参考地址:https://docs.mongodb.org/manual/reference/program/mongodump/

1、mongodump 导出数据使用的是BSON格式,而非JSON格式

2、 mongodump can read data from either mongod or mongos instances. mongodump 可以基于mongod/mongos读取数据

 

C100DBA MongoDB DBA认证考题讲解 备份运行中的分片集群

 

 

C100DBA MongoDB  DBA认证考题讲解 备份运行中的分片集群

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

MongoDB技术学习QQ群: 421431253

 

Screen Shot 2015-04-28 at 10.43.33 PM

 

 

which of the following must you do before backing up a running sharded  cluster using a file system snapshot?

  1. Disable Journaling
  2. Force an election
  3. Stop all the config server
  4. backup secondaries
  5. Disable the balancer

下列哪个选项是当你使用文件系统快照备份一个在运行中的分片集群时必要做的?

  1. 禁用 Journaling 日志
  2. 强制一次election
  3. 关闭所有的config server
  4. 备份secondaries
  5. 禁用balancer

可参考文档 https://docs.mongodb.org/manual/tutorial/backup-sharded-cluster-with-filesystem-snapshots/

 

最佳答案为 E  禁用balancer

其过程分为:

Disable the balancer.

1

Disable the balancer.

Disable the balancer process that equalizes the distribution of data among the shards. To disable the balancer, use the sh.stopBalancer() method in the mongo shell.

Consider the following example:

use config
sh.stopBalancer()

For more information, see the Disable the Balancer procedure.

2

If necessary, lock one secondary member of each replica set in each shard.

If your mongod does not have journaling enabled or your journal and data files are on different volumes, you must lock your mongod before capturing a back up.

If your mongod has journaling enabled and your journal and data files are on the same volume, you may skip this step.

If you need to lock the mongod, attempt to lock one secondary member of each replica set in each shard so that your backups reflect the state of your database at the nearest possible approximation of a single moment in time.

To lock a secondary, connect through the mongo shell to the secondary member’s mongod instance and issue the db.fsyncLock() method.

3

Back up one of the config servers.

Backing up a config server backs up the sharded cluster’s metadata. You need back up only one config server, as they all hold the same data. Do one of the following to back up one of the config servers:

Create a file-system snapshot of the config server.

Do this only if the config server has journaling enabled. Use the procedure in Backup and Restore with Filesystem Snapshots. Never use db.fsyncLock() on config databases.

Create a database dump to backup the config server.

Issue mongodump against one of the config mongod instances. If you are running MongoDB 2.4 or later with the –configsvr option, then include the –oplog option to ensure that the dump includes a partial oplog containing operations from the duration of the mongodump operation. For example:

mongodump --oplog
4

Back up the replica set members of the shards that you locked.

You may back up the shards in parallel. For each shard, create a snapshot. Use the procedure inBackup and Restore with Filesystem Snapshots.

5

Unlock locked replica set members.

If you locked any mongod instances to capture the backup, unlock them now.

Unlock all locked replica set members of each shard using the db.fsyncUnlock() method in themongo shell.

6

Enable the balancer.

Re-enable the balancer with the sh.setBalancerState() method. Use the following command sequence when connected to the mongos with the mongo shell:

use config
sh.setBalancerState(true)

MongoDB 3.0新增的压缩选项

本文地址:http://www.askmaclean.com/archives/new-compression-options-mongodb-30.html

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

MongoDB技术学习QQ群: 421431253

MongoDB3.0对WiredTiger存储引擎引入了压缩功能。在本文中,我们将观察不同选项,并举例说明这个功能如何运行。由于情况因人而异,所以我们鼓励你测试自己的数据和应用程序。

 

为什么需要压缩?

每个人都知道存储很便宜对吧?

但是,有可能你添加数据的速度比存储价格下降的速度来得更快,你花费在存储上的净支出实际上正在上升。你的内部成本也可能需要包括管理等因素,因此它们的价格可能会比商品市场价格高出很多。换句话说,你仍然需要寻求新的方式以减少您对存储的需求。

 

磁盘存储的大小是一个需要考虑的因素,当然还有其他需要考虑的。磁盘I/ O延迟是由在旋转存储上寻道时间为主导。通过降低数据的大小,用更少的磁盘寻道检索一定量的数据是必要的,这样磁盘I / O吞吐量将得到改善。对于RAM而言,一些压缩格式可以不用解压在内存中的数据。在这样的情况下,更多的数据可以放在RAM中,从而提高了性能。【dbdao.com 数据岛

MongoDB的存储性能

还有两个关于存储的重要特性,影响空间在MongoDB中的使用:BSON和动态模式。

 

MongoDB存储数据在BSON,一种类似JSON文件的二进制编码(BSON支持其他数据类型,如日期,不同的数字类型,二进制类型)。 BSON能有效编码和解码,并且易于遍历。然而,BSON不压缩数据,所以有可能它的数据表示大于同等的JSON。

 

用户喜欢MongoDB的文档数据模型的一点是其动态schema。在大多数数据库中,模式(Schema)是在一个分类或系统表中集中进行描述和维护的。列名对所有行仅保存一次。这种方法对于空间是有效的,但它需要所有数据根据模式被构造。 MongoDB中目前还没有核心分类:每个文件是自述的。新字段可以被添加到一个文档,而不会影响其他文件,并且不用在核心分类中进行字段登记。

 

更大灵活性的代价是更大的应用空间。字段名在每个文档中被定义,在允许的情况下就使用较短的字段名。但是同样要注意不要太短 – 单字母字段名称或代码会使得字段名称很难理解和阅读,其数据也变得更难使用。

 

好在传统的模式不是有效利用空间的唯一方式。对于处理重复值比如字段名称,以及在文件中存储的大量数据,压缩也是很有效的方式。

 

没有万能的压缩方法

压缩很常见:图像(JPEG,GIF),音频(MP3),视频(MPEG),以及大多数Web服务器在使用gzip发送到浏览器之前,也会压缩网页。压缩算法已经存在了几十年,也有一些奖励创新的比赛。

 

压缩库依靠CPU和RAM来压缩和解压缩数据,而且每个都在压缩率,速度和资源利用率​​方面有不同的权衡。例如,一个当今最好的压缩库在文本方面可以压缩1GB的维基百科数据到124MB,相对于gzip的323MB,但它需要大约近3000倍的时间和30000倍的内存来这样做。根据您的数据和应用程序,某个库的使用可能会对于你的需求比别人更有效。

 

MongoDB3.0引入WiredTiger,支持压缩一个新的存储引擎。 WiredTiger使用页面管理磁盘I / O。每个页面都包含很多BSON文件。页面被写入磁盘时就被默认压缩,当在磁盘中被读入高速缓存时它们就被解压。【dbdao.com 数据岛

 

压缩的基本概念之一是重复值 – 确切的值以及形式 – 可以一次以压缩的格式被存储,减少了空间的总量。较大的数据单元倾向于更有效地压缩,因为有更多重复值。通过在页面级别压缩 – 通常称为数据块压缩 – WiredTiger可以更有效地压缩数据。

 

WiredTiger支持多种压缩库。你可以决定哪个选项是最适合你的集合水平。这是一个重要的选择,你的访问模式和数据可能在集合间大不相同。例如,如果你使用GridFS的存储较大的文件,如图片和视频,MongoDB自动把大文件分成许多较小的“块”,当需要的时候再重新组合。 GridFS的实施维护两个集合:fs.files,包含大文件的元数据和其相关的块;以及fs.chunks,包含大数据分成的255KB的块。对于图像和视频,压缩可能会有益于fs.files集合,但在fs.chunks的数据可能已经被压缩,因此它对于这个集合可能需要禁用压缩。

 

MongoDB3.0中的压缩选项

在MongoDB 3.0中,WiredTiger为集合提供三个压缩选项:

  1. 无压缩
  2. Snappy(默认启用) – 很不错的压缩,有效利用资源
  3. zlib(类似gzip) – 出色的压缩,但需要占用更多资源

 

有索引的两个压缩选项:

  1. 无压缩
  2. 前缀(默认启用) – 良好的压缩,资源的有效利用

 

你也许会好奇,为什么对索引压缩选项与集合的不同。前缀压缩是相当简单的 – 值的“前缀”是将数据集中重复数据删除。这对于某些数据集特别有效,如那些低基数的(例如,国家),或那些具有重复值的,如电话号码,社会安全码和地理坐标。它对复合索引特别有效,如第一列与第二列的所有唯一值重复。前缀索引还提供了一个非常重要的优势优于Snappy或zlib – 可以直接使用压缩索引进行查询操作。

 

当从磁盘中访问被压缩的集合数据,数据在高速缓存中被解压。通过前缀压缩,索引可以在RAM中保持被压缩的形式。我们往往看到使用前缀压缩得到的非常好的带索引的压缩,这意味着在大多数情况下,你可以容纳更多的索引在内存中而不牺牲读取的性能,并且对写的影响很小。压缩率会有因您的数据的基数以及是否使用复合索引而有显著的不同。

 

请记住哪些适用于MongoDB的3.0所有压缩选项:

  1. 随机数据不能压缩
  2. 二进制数据不能压缩(它可能已经被压缩)
  3. 文本压缩效果特别好
  4. 对于文件中的字段名压缩效果特别好(尤其对短字段名来说)

 

默认情况下,对WiredTiger存储引擎存储的集合和索引启用压缩。 为了在启动时明确设置副本的压缩,需要在YAML配置文件中的进行相应设置。使用命令行选项 –wiredTigerCollectionBlockCompressor。由于WiredTiger不是在MongoDB中3.0的默认存储引擎,你还需要指定 –storageEngine选择使用WiredTiger再利用这些压缩功能。【dbdao.com 数据岛

 

要指定压缩特定的集合,你需要使用db.createCollection() 命令中的并传入相应参数项来覆盖默认值。例如,使用zlib压缩库创建一个名为email的集合:

如何测量压缩

测量压缩的最好方法是使用和不使用启用压缩来分别装载数据,然后比较两个大小。db.stats()命令返回许多不同的存储数据,但两个与比较有关的测量点是存储大小和索引大小。值以字节为单位返回,但你可以通过传入1024*1024参数转换成MB:

这是我们在使用下面压缩方法时进行的测量方法。

 

在不同的数据集上测试压缩

让我们来看一些不同的数据集,看看一些压缩选项的执行。我们有四个数据库:

 

Enron

这是臭名昭著的Enron email corpus。它包括约50万的电子邮件。在邮件正文字段有大量的文本,一些元数据的基数很低,这意味着他们都可能会被压缩得很好。下面是一个例子(这里截断了电子邮件正文):

不同选项在Enron数据库的运行状态:

Flights

美国联邦航空管理局(FAA)提供了关于按时的航空公司服务的数据。每个航班被表示为一个文件。许多字段有低基数,所以我们觉得这个数据集会得到很好的压缩:

不同选项在Flights数据库的运行状态:

MongoDB的配置数据库

这是MongoDB存储在配置数据库进行分片集群的元数据。该手册描述了该数据库的各种集合。下面是来自块集合的一个例子,它把每个块的文件存储于集群中:

不同选项在配置数据库的运行状态:

TPC-H

TPC-H是一款经典的用于测试关系分析的数据库管理系统的标杆。该模式已被修正为使用MongoDB的文档模型。下面是订单表中的例子,只有很多行项目的第一个在此订单显示:

不同选项在TPC-H数据库的运行状态:

Twitter

这是200K的数据库。这里有一个模拟使用了Java3.0驱动的Tweets:

不同选项在Twitter数据库的运行状态:

比较压缩率

这些数据库大小不等, 这使得他们难以进行比较绝对的大小比较。我们可以通过比较每个选项所节省的存储空间来看他们的好处。要做到这一点,我们通过使用Sanppy和zlib在WiredTiger中的未压缩大小来比较每个数据库的大小。如上所述,我们增加storageSize和indexSize的值。【dbdao.com 数据岛

另一种描述压缩的好处的方式是未压缩尺寸与压缩后的大小的比例计算。这里是Snappy和zlib在五个databases.v的执行。

如何测试自己的数据

有两种简单的方法可用于测试你在MongoDB 3.0中的数据的压缩。

 

如果你已经升级到MongoDB 3.0,你可以简单地用在副本中增加一个新成员并在启动时指定使用WiredTiger存储引擎。当你在运行时,通过设置为0 votes来隐藏这个副本,这样就不会影响到你的部署。 这个副本集新成员将和已存的成员进行初始同步。初始同步完成后,你可以从你的副本集中删除这个WiredTiger副本,然后连接到之前单独副本来比较你的数据库大小。对于你要测试的每个压缩选项,您可以重复这一过程。

 

另一种选择是使用mongodump导出你的数据并用它将其还原到一个独立的MongoDB 3.0实例。默认情况下您的集合将使用Snappy的压缩选项,但你在运行mongorestore之前,先创建具有相应设置的集合来指定不同选项,或者用不同的压缩选项启动mongod。这种方法能够导出/恢复特定的数据库,集合,或集合的子集来执行测试。

 

对于语法设置压缩选项的例子,请参见“如何使用压缩”部分。

 

固定集合(capped collection)须知

固定集合在MMAP存储引擎的实现与WiredTiger(和RocksDB)非常不同。在MMAP,空间在创建时被分配用于固定集合,而对于WiredTiger和RocksDB,只有当数据被添加到固定集合时,空间才被分配。如果你有很多空的或大部分空的固定集合,在不同的存储引擎之间的比较可能会因为这个原因出现误导。

by dbdao.com 数据岛

 

MongoDB归档及压缩工具

本文地址:http://www.askmaclean.com/archives/archiving-and-compression-in-mongodb-tools.html

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

MongoDB技术学习QQ群: 421431253

 

介绍

 

我在MongoDB World 2015做的演讲“Putting the Go in MongoDB”,重点是关于MongoDB工具的重写,从C ++到Go,这在可用性以及性能方面得到了一些改进,但是这里我只简要的说两个方面的新功能,(planned for the 3.2 release) – 归档和压缩。

 

在本文中,我将对mongodump和mongorestore提供更详细的归档和压缩特性说明,并探索使用这些特性的可行用例。

 

概述

 

一个通常目的的归档一般由一个或多个文件组成。这样例子如磁带归档格式(tar),其中包含按顺序组成的一个或多个文件。归档在执行进程间通信的应用程序中尤其有用,例如,你可以通过远程服务器进行目录的tarball压缩,然后通过SSH,传送到到本机上进行解压:

由于归档以顺序的方式创建,接收端将能按顺序接收到发送端按顺序发来的数据。

 

在3.0中,我们增加了在MongoDB中并发执行备份和恢复多个集合的能力,这可以让你执行备份时,更加充分地利用磁盘I / O。 结果,写入mongodump的备份并不一定以顺序的方式接收。 同样,mongorestore同时读取还原操作集合,它的读取指令也并非是序列性的。

通用归档格式,如tar,只支持连续的文件归档打包。mongodump和mongorestore利用这些备份格式,将得到一个不可接受的性能退化, 由于所有集合的数据将不得不被按顺序写入和读出。为了支持这些工具的并发行为,我们研发了一个特殊的通用备份格式,支持非并发文件的写入。 这个新的归档特性极大了提高了备份和还原操作的效率。【dbDao.com 数据岛

 

背景

 

为了按上下文情况进行备份,我们考虑一下你们通常是如何创建备份的。比如,假设你有一个“country”的数据库,其中含有两个集合-“nigeria” and “austria”, 你可能会这样操作:

上面的指令读取“country”数据库的所有集合, 然后将其写入“dump”目录。 上面的指令就会产生以下的目录列表:

你也可以备份整个服务器-这里的服务器包含两个数据库(country 和product)。

或选择备份单个集合到标准输出,而不是一个目录:

 

归档支持

 

在3.2中,我们引入了创建备份的一个附加模式 – “归档”模式,写入所有转储数据,甚至从不同的数据库和集合到单一的输出文件。 使用mongodump创建归档是极为简单的 – 只需要一个附加选项:

上面的指令将在“country.archive”文件中创建“country”的数据库归档。默认情况下,归档被写入到标准输出。不同于目录模式的执行备份,创建目录树,默认归档模式下备份结果就是一个单一的文件, 包含“country”数据库的所有数据-所有集合,索引等。【dbDao.com 数据岛

 

你也可以备份一个单一的集合或整个服务器的内容:

单一集合:

整个服务器:

在mongodump的这种情况下,归档模式允许多个集合以非连续的方式打包在归档文件内。在mongorestore中,它允许多个集合进行并行恢复。这样,你可以在网络上执行数据迁移,降低磁盘I/O所占空间,享受到充分利用工具和底层存储引擎的并发所带来的好处。

 

数据迁移

 

一个新的备份改善的例子, 是mongodump和mongorestore之间的进程间通信 – 特别是能够将数据从一个传到另一个。在以前的版本中,这种支持有限 – 一个时间只能传输一个集合。现在,使用归档就没有这样的限制。这种方式对于数据库服务器出于安全考虑而安装有防火墙的情况下很有用。在这种情况下,一个通常的设计是允许一个或多个服务器方访问数据库。使用归档功能,在SSH上进行数据转移数据,就轻而易举了:

上面的指令使用SSH方式连接到代理主机(proxy.server.com),访问源服务器(source.server.com),在代理服务器上运行mongodump,为了最终的恢复,将源服务器的发送内容(通过SSH)到目标服务器(target.server.com)。

 

如果没有归档,通过mongodump完成这些操作的唯一办法就是,先执行备份到磁盘,在将文件复制到目标服务器,然后运行mongorestore。通过备份,一个指令就可以完成- 无需任何附加磁盘I/ O的开销。【dbDao.com 数据岛

 

压缩支持

 

除了备份,我们还使用gzip进行压缩。这是通过在mongodump和mongorestore中引入一个新的指令行选项“- -gzip”实现的。 压缩可用于目录以及归档模型下创建的备份,压缩还可以减少磁盘空间使用。

生成:

注意,目录模型的归档备份大小-568KB-比没有压缩的备份要小很多-4.3MB.

 

压缩归档:

对于归档来说,数据在写入归档之前需要先压缩。【dbDao.com 数据岛

恢复压缩目录模式备份,你应该运行:

类似用来恢复归档模式下的压缩备份的命令:

数据迁移不会产生任何磁盘I / O开销,由于压缩,将会使用更少的网络带宽。

 

总结

 

归档和压缩特性产生了许多用于进行备份和恢复操作的例子。如果你们正在使用MongoDB工具和其它类型的应用程序,我们也乐于倾听你们的经验及用例。 尽管目前最新版本工具还不文档,不过希望大家先对这些特性体验起来。

 

注:作为提供共享集群的集群范围快照的唯一备份解决方案,MongoDB Ops Manager和MongoDB Cloud Mannager被推荐用于较大的MongoDB部署。

by dbDao.com 数据岛

沪公网安备 31010802001379号

TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569