MongoDB 备份恢复

举报
kaliarch 发表于 2022/03/12 10:05:05 2022/03/12
【摘要】 一、概述​​1.1 MongoDB概念​MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,...

一、概述

1.1 MongoDB概念

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。在nosql数据库里,大部分的查询都是键值对(key、value)的方式。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的。其特征NoSQL、文档存储、Json数据模型、支持事务。

1.2 NoSQL概念

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

1.3 NoSQL的特征

高扩展性​:Nosql去掉了关系数据库的关系型特性,易于横向扩展。

高性能​:Nosql通过简单的key-value方式获取数据,非常快速。还有NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多。

灵活的数据模型​:相对于关系数据库里,增删字段的繁琐,NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。

高可用​:NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如mongodb通过mongos、config server replica set,shard就可以快速配置出高可用配置。​

二 备份恢复

a.mongodb数据备份

mongodump命令脚本语法如下:

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 --host HOST_NAME --port PORT_NUMBER

该命令将备份所有MongoDB数据

mongodump --host localhost --port 27017

mongodump --dbpath DB_PATH --out BACKUP_DIRECTORY


mongodump --dbpath /data/db/ --out /data/backup/

mongodump --collection COLLECTION --db DB_NAME

该命令将备份指定数据库的集合。

mongodump --collection mycol --db test

b.mongodb数据恢复

mongorestore命令脚本语法如下:

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

此时查看数据已经正常恢复。

3.7 密码权限

为mongodb设置密码,需要进行auth启动,在配置文件添加auth=true

a.设置数据库管理员

> use admin
switched to db admin
> db.createUser({user:"root",pwd:"mongopwd",roles:["userAdminAnyDatabase"]})                #创建用户密码,并设置权限
Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }
> db.auth("root","mongopwd")                            #认证,返回1为认证成功
1

认证通过进入数据库db.auth 也可以在登录的时候直接指定用户名密码登录

mongo -u root -p mongopwd --authenticationDatabase admin

b.创建数据库用户

> use test
switched to db test
> db
test
>  db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]})
Successfully added user: { "user" : "testuser", "roles" : [ "readWrite" ] }
> db.auth("testuser","testpass")
1


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。