暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MongoDB 备份恢复

原创 GaussDB数据库 2022-03-14
402

文章转自华为云数据库,作者:kaliarch;原文链接:https://bbs.huaweicloud.com/blogs/336674

一、概述​

​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:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

mongorestore 最后的一个参数,设置备份数据所在位置,例如:/tmp/testdb
你不能同时指定 和 --dir 选项,–dir也可以设置备份目录。
–dir:
指定备份的目录
你不能同时指定 和 --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

最后修改时间:2022-03-23 10:51:19
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论