AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 173555
Accepted
Sybil
Sybil
Asked: 2017-05-15 10:27:02 +0800 CST2017-05-15 10:27:02 +0800 CST 2017-05-15 10:27:02 +0800 CST

mongodump:总数据大小为 575 GB 的 4 个分片是否考虑小型分片集群?

  • 772

我需要使用 Ops Manager 测试恢复。为此,我“克隆”了生产分片集群。我创建了与生产规模相同的 VM 并执行mongodump/mongorestore(Ops Manager 部署)。我的测试(用于恢复)不需要是一致的副本,对我来说,如果丢失大约 5 GB 就没问题。

DATA SIZE: 573.6 GB

shard0
142.6 GB

shard1
145.94 GB

shard2
142.55 GB

shard3
142.52 GB

为简单起见,我希望使用mongodump 并将其通过管道传输到mongos.

我找到了一个旧文档 (v3.0) Backup a Small Sharded Cluster with mongodump。该文档在新的 MongoDB 版本中不再存在。

如果您的分片集群包含一个小数据集,您可以使用 mongodump 连接到 mongos。

GB中的小数据集是什么?见上文我的部署。

如果您在不指定数据库或集合的情况下使用 mongodump,mongodump 将从配置服务器捕获集合数据和集群元数据。

我不需要显式备份配置 RS?

将数据恢复到分片集群时,必须在从备份恢复数据之前部署和配置分片。有关详细信息,请参阅部署分片集群。

这意味着用简单的英语我需要shard key (and enable sharding)在恢复之前定义?

我会错过任何步骤/重要的事情吗?

backup mongodb
  • 2 2 个回答
  • 1124 Views

2 个回答

  • Voted
  1. Vignan Chintu
    2017-05-15T21:25:57+08:002017-05-15T21:25:57+08:00

    它不是一个小的分片集群。

    600GB 的 Mongodump 大约需要 5 个小时,而根据您收藏中的索引,恢复需要超过 5 个小时。

    我最好的建议是:

    1. 如果您已经有 Mongo Ops-Manager 进行的备份,请使用它并在新环境中恢复。

    2. 如果时间对您来说不是真正的问题,请使用转储和恢复方法。

    3. Mongodump 和 restore 方法可以处理巨大的数据库,如果你想恢复几个集合然后使用 export 和 import 选项。

    注意:我可以在这里给出一个让这个过程更快的小提示:

    Mongodump 将在 2 个文件中备份 db 和集合,一个是 bson,另一个是 json。Bson 将拥有索引,而 json 将拥有数据。

    因此,Mongorestore 进程将首先恢复 json 文件,然后开始恢复 bson 文件并应用索引。

    为了更快地完成这个过程,首先制作一个 mongodump 并从所有数据库和集合中获取所有索引并首先手动应用索引,然后使用 mongorestore 恢复数据,这个过程将至少节省 30-40% 的时间。

    • 1
  2. Best Answer
    Stennie
    2017-05-24T05:39:20+08:002017-05-24T05:39:20+08:00

    我找到了一个旧文档 (v3.0) Backup a Small Sharded Cluster with mongodump。该文档在新的 MongoDB 版本中不再存在。

    此过程仅用于备份数据,不包括重新创建分片环境或捕获时间点备份。正如您所注意到的,没有提及备份配置服务器数据或分片环境所需的其他基本步骤(例如,停止平衡器)。此过程可能适用于从开发或暂存环境备份数据,但不推荐用于典型的生产环境。

    有关使用 的更完整的分片备份过程mongodump,请参阅:使用数据库转储备份分片集群。请确保您引用的文档版本与您的 MongoDB 发布系列相匹配,因为可能存在显着差异。

    但是,您提到使用 MongoDB Ops Manager,它包括用于备份分片集群的特定功能。如果您选择手动恢复选项,Ops Manager 将提供存档文件来恢复配置服务器和分片。由于 Ops Manager 许可是 MongoDB Enterprise 订阅的一部分,如果您需要有关任何程序或要求的建议或说明,我建议您提出 MongoDB 的商业支持案例。

    GB中的小数据集是什么?

    没有绝对的数字。一般因素包括资源挑战,例如数据相对于 RAM 的大小、可用网络带宽以及数据变化的速度。mongodump通常,如果您有足够的数据或工作负载来保证分片,那么作为备份方法,您也已经过时了。

    mongodump将把所有数据读入内存,如果您的数据比可用 RAM 大得多,这将对分片的工作集产生重大影响。您还需要有足够的磁盘空间来保存通过单个转储的数据的完整备份(或 MongoDB 3.2+ 的压缩备份)mongos,足够的网络带宽以应对增加的流量等。

    对于您的特定用例mongodump,出于以下几个重要原因,绝对不是值得推荐的策略:

    • 这是生产环境
    • 你想在另一个环境中克隆/重新创建分片集群
    • 您可以访问 MongoDB Ops Manager 进行备份
    • 1

相关问题

  • 更改了 max_allowed_pa​​cket 并仍然收到“数据包太大”错误

  • 关于操作/管理 MongoDB 的良好资源

  • SQL Server Express 的任务计划程序

  • 我可以在使用数据库后激活 PITR 吗?

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve