设为首页 收藏本站
查看: 979|回复: 0

[经验分享] MongoDB整库备份与还原以及单个collection备份、恢复方法

[复制链接]

尚未签到

发表于 2018-10-26 07:19:43 | 显示全部楼层 |阅读模式
  备份前的检查
  > show dbs
  MyDB 0.0625GB
  admin (empty)
  bruce 0.0625GB
  local (empty)
  test 0.0625GB
  > use MyDB
  switched to db MyDB
  > db.users.find()
  { "_id" : ObjectId("4e290aa39a1945747b28f1ee"), "a" : 1, "b" : 1 }
  { "_id" : ObjectId("4e2cd2182a65c81f21566318"), "a" : 3, "b" : 5 }
  >
  整库备份
  mongodump -h dbhost -d dbname -o dbdirectory
  -h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
  -d:需要备份的数据库实例,例如:test
  -o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
  mongodump的官方说明(可通过mongodump --help查看):
  options:
  --help          produce help message
  -v [ --verbose ]     be more verbose (include multiple times for more
  verbosity e.g. -vvvvv)
  --version        print the program's version and exit
  -h [ --host ] arg    mongo host to connect to ( /s1,s2 for
  sets)
  --port arg        server port. Can also use --host hostname:port
  --ipv6          enable IPv6 support (disabled by default)
  -u [ --username ] arg  username
  -p [ --password ] arg  password
  --dbpath arg       directly access mongod database files in the given
  path, instead of connecting to a mongod server -
  needs to lock the data directory, so cannot be used
  if a mongod is currently accessing the same path
  --directoryperdb     if dbpath specified, each db is in a separate
  directory
  --journal        enable journaling
  -d [ --db ] arg     database to use
  -c [ --collection ] arg collection to use (some commands)
  -o [ --out ] arg (=dump) output directory or "-" for stdout
  -q [ --query ] arg    json query
  --oplog         Use oplog for point-in-time snapshotting
  --repair         try to recover a crashed database
  --forceTableScan     force a table scan (do not use $snapshot)
  整库恢复
  mongorestore -h dbhost -d dbname –directoryperdb dbdirectory
  -h:MongoDB所在服务器地址
  -d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
  –directoryperdb:备份数据所在位置,例如:c:\data\dump\test,这里为什么要多加一个test,而不是备份时候的dump,读者自己查看提示吧!
  –drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
  mongorestore的官方说明(可通过mongorestore --help查看):
  options:
  --help         produce help message
  -v [ --verbose ]    be more verbose (include multiple times for more
  verbosity e.g. -vvvvv)
  --version        print the program's version and exit
  -h [ --host ] arg    mongo host to connect to ( /s1,s2 for sets)
  --port arg       server port. Can also use --host hostname:port
  --ipv6         enable IPv6 support (disabled by default)
  -u [ --username ] arg  username
  -p [ --password ] arg  password
  --dbpath arg      directly access mongod database files in the given
  path, instead of connecting to a mongod server -
  needs to lock the data directory, so cannot be used
  if a mongod is currently accessing the same path
  --directoryperdb    if dbpath specified, each db is in a separate
  directory
  --journal        enable journaling
  -d [ --db ] arg     database to use
  -c [ --collection ] arg collection to use (some commands)
  --objcheck       validate object before inserting
  --filter arg      filter to apply before inserting
  --drop         drop each collection before import
  --oplogReplay      replay oplog for point-in-time restore
  --oplogLimit arg    exclude oplog entries newer than provided timestamp
  (epoch[:ordinal])
  --keepIndexVersion   don't upgrade indexes to newest version
  --noOptionsRestore   don't restore collection options
  --noIndexRestore    don't restore indexes
  --w arg (=1)      minimum number of replicas per write
  单个collection备份
  mongoexport -h dbhost -d dbname -c collectionname -f collectionKey -o dbdirectory
  -h: MongoDB所在服务器地址
  -d: 需要恢复的数据库实例
  -c: 需要恢复的集合
  -f: 需要导出的字段(省略为所有字段)
  -o: 表示导出的文件名
  mongoexport的官方说明(可通过mongoexport --help查看):
  --help          produce help message
  -v [ --verbose ]     be more verbose (include multiple times for more
  verbosity e.g. -vvvvv)
  --version         print the program's version and exit
  -h [ --host ] arg     mongo host to connect to ( /s1,s2 for
  sets)
  --port arg        server port. Can also use --host hostname:port
  --ipv6          enable IPv6 support (disabled by default)
  -u [ --username ] arg   username
  -p [ --password ] arg   password
  --dbpath arg       directly access mongod database files in the given
  path, instead of connecting to a mongod server -
  needs to lock the data directory, so cannot be used
  if a mongod is currently accessing the same path
  --directoryperdb     if dbpath specified, each db is in a separate
  directory
  --journal         enable journaling
  -d [ --db ] arg      database to use
  -c [ --collection ] arg  collection to use (some commands)
  -f [ --fields ] arg    comma separated list of field names e.g. -f
  name,age
  --fieldFile arg      file with fields names - 1 per line
  -q [ --query ] arg    query filter, as a JSON string
  --csv           export to csv instead of json
  -o [ --out ] arg     output file; if not specified, stdout is used
  --jsonArray        output to a json array rather than one object per
  line
  -k [ --slaveOk ] arg (=1) use secondaries for export if available, default
  true
  --forceTableScan     force a table scan (do not use $snapshot)
  单个collection恢复
  mongoimport -d dbhost -c collectionname –type csv –headerline –file
  -type: 指明要导入的文件格式
  -headerline: 批明不导入第一行,因为第一行是列名
  -file: 指明要导入的文件路径
  mongoimport的官方说明(可通过mongoimport --help查看):
  --help         produce help message
  -v [ --verbose ]    be more verbose (include multiple times for more
  verbosity e.g. -vvvvv)
  --version        print the program's version and exit
  -h [ --host ] arg    mongo host to connect to ( /s1,s2 for sets)
  --port arg       server port. Can also use --host hostname:port
  --ipv6         enable IPv6 support (disabled by default)
  -u [ --username ] arg  username
  -p [ --password ] arg  password
  --dbpath arg      directly access mongod database files in the given
  path, instead of connecting to a mongod server -
  needs to lock the data directory, so cannot be used
  if a mongod is currently accessing the same path
  --directoryperdb    if dbpath specified, each db is in a separate
  directory
  --journal        enable journaling
  -d [ --db ] arg     database to use
  -c [ --collection ] arg collection to use (some commands)
  -f [ --fields ] arg   comma separated list of field names e.g. -f name,age
  --fieldFile arg     file with fields names - 1 per line
  --ignoreBlanks     if given, empty fields in csv and tsv will be ignored
  --type arg       type of file to import. default: json (json,csv,tsv)
  --file arg       file to import from; if not specified stdin is used
  --drop         drop collection first
  --headerline      CSV,TSV only - use first line as headers
  --upsert        insert or update objects that already exist
  --upsertFields arg   comma-separated fields for the query part of the
  upsert. You should make sure this is indexed
  --stopOnError      stop importing at first error rather than continuing
  --jsonArray       load a json array, not one item per line. Currently
  limited to 16MB.
  其他导入与导出操作
  1. mongoimport -d my_mongodb -c user user.dat
  参数说明:
  -d 指明使用的库, 本例中为” my_mongodb”
  -c 指明要导出的表, 本例中为”user”
  可以看到导入数据的时候会隐式创建表结构
  2. mongoexport -d my_mongodb -c user -o user.dat
  参数说明:
  -d 指明使用的库, 本例中为” my_mongodb”
  -c 指明要导出的表, 本例中为”user”
  -o 指明要导出的文件名, 本例中为”user.dat”
  从上面可以看到导出的方式使用的是JSON 的样式.


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-626498-1-1.html 上篇帖子: AWS上的MongoDB:如果为你的MongoDB服务器选择正确的EC2实例类型? 下篇帖子: mongodb运行状态参数详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表