【问题标题】:How can I backup a list of mongo collections to archive using mongodump如何使用 mongodump 备份 mongo 集合列表以存档
【发布时间】:2020-07-07 05:33:02
【问题描述】:

我正在使用 mongodump(版本 r3.6.18)并且我想备份一个集合列表。 我尝试使用 --exclude 选项,但我面临的问题是 OSError: [Errno 7] Argument list too long 如果参数大小增加超过 ARGMAX 缓冲区,这是一个操作系统错误。

有一种方法可以通过循环来备份集合列表,但我想使用它所在的 --archive--gzip 选项不工作。您能否为以下问题陈述提供替代方案 -

  1. 我要备份收藏列表
  2. 备份存档必须是单个文件(gzip 存档)

【问题讨论】:

  • 您的数据库中有多少个集合?您要导出多少个集合?
  • 可能有超过 200 个集合,从那个数据库,我只想将 10 个集合备份到存档!
  • 我认为如果不循环你的收藏名称,仍然没有办法做你的事情。 mongodb 文档说To exclude multiple collections, specify the --excludeCollection multiple times.
  • @prasad_ 我想要一种可以将收藏列表备份到 gzip 存档的方法,就是这样!
  • @Mahan 没错,我尝试仅使用 --excludeCollection,但现在当 db 中的集合数量增加时,它会抛出 Argument list too long。我不认为这是一个可行的解决方案。问题陈述如何,我只想将 3 个集合备份到存档中!有可能吗? [没有 --exclude 选项]

标签: mongodb mongodb-query mongodump


【解决方案1】:

这是您可以用来转储特定集合的 bash 脚本:

#!/bin/bash
colls=(coll1 coll2 coll3)
for c in ${colls[@]}
do
  mongodump --host {YOUR_HOST} -d {YOUR_DB} -u {USERNAME} -p {PASSWORD} -c $c --gzip --out OUTPUT
done

【讨论】:

  • 这是否会创建一个包含所有三个集合 (col1 col2 col3) 的存档。我也需要使用mongorestore 脚本。因此,如果它不是一个单一的 gzip 存档,那么它将无法工作!
  • 不幸的是,你不能使用 --archive 标志
  • 我建议使用 linux 命令手动存档备份。
  • 它可以在不使用单个文件的情况下工作。当你想恢复它时,你必须传递--gzip 标志。
  • 例如,如果您的备份文件夹是 /backup,其中包含多个 tar.gz 文件,您可以使用此命令来恢复它:mongorestore --db {YOUR_DB} /backup --gzip
猜你喜欢
  • 2015-09-07
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
  • 2021-03-28
相关资源
最近更新 更多