MongoDB -- 介绍安装库管理备份以及恢复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB -- 介绍安装库管理备份以及恢复相关的知识,希望对你有一定的参考价值。

                                 Mongodb 介绍

文档型数据库

C++语言编写,分布式文件存储的开源数据库系统,属于NoSQL

在高负载的情况下,可以添加更多的节点,保证服务器的性能

为WEB应用提供可扩展的高性能数据存储解决方案。

将数据存储为一个文档,数据结构由键值对组成,MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组以及文档数组。

从3.2开始默认使用WiredTiger storage engine.

                 NoSQL MongoDB安装

vim /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=
gpgcheck=1
enabled=1
gpgkey=


yum install -y mongodb-org
#sed -i "s%bindIp: 127.0.0.1%#bindIp: 127.0.0.1%g" /etc/mongod.conf  监听所有的IP,监听多个192.168.1.1,192.168.1.2 使用逗号隔开


     

卸载

yum erase $(rpm -qa | grep mongodb-org)
rm -r /var/log/mongodb
rm -r /var/lib/mongo


进入mongo shell时 提示

技术分享


关于读写的认证部分(第一个警告),warning 暂时未解决,按照官方文档操作亦有此问题。

修改内核

echo never >/sys/kernel/mm/transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/defrag


systemctl start mongod.service
chkconfig mongod on   设置开机启动

无法启动时 可以使用 mongodb -f /etc/mongodb.conf 来启动 ,可以查看错误


Mongodb 连接和用户管理

mongo 进入到mongodb shell中 (--port 指定端口  默认的端口27017)

连接远程主机  mongo --host  127.0.0.1

mongo -uusername    -ppasswd

用户管理(针对库),建立用户时要先进入到对应的库里

use test   (切换库,没有自动创建)

db   //显示所在的数据库

db.createUser({user:"admin",pwd:"123456",roles:[{role:‘dbOwner‘,db:‘userdb‘}]})

use admin

db.system.users.find()   //必须在admin库里 才能找到所有用户,列出所有用户,需要切换到admin库

show users;  //查看当前库的所有用户

db.dropUser(‘admin‘)  //删除用户

MongoDB库管理

db.version()  //查看版本号

use test   (切换库,没有自动创建)

show dbs   //查看库,此时userdb并没有出现,这是因为该库是空的,还没有任何集合,只需要创建一个集合就能看到了

db.createCollection(‘clo1‘)  //创建集合clo1,在当前库下面创建

db.dropDatabase()       //删除当前库,必须切换到库下再删除

db.stats()   //查看当前库信息

db.serverStatus()

db.createCollection(‘clo1‘,{capped:true,autoIndexID:true,size:6142800,max:10000})

capped:true   启用封顶集合,固定大小的集合,到达最大值时,自动覆盖最早的条目。如果为true,需要指定尺寸大小。

,autoIndexID:true 自动创建索引 _id字段的默认是false

size 指定最大字节的封顶集合,单位 B

max  指定封顶集合允许在文件的最大数量。

show collections  //查看所有集合   可以用 show tables

db.clo1.insert({clo1ID:1,UserName:"123",password:"123456"})   //如果集合不存在,自动创建集合

db.Account.find()   //查看Account的所有文档

db.Account.find({AccountID:2})   //查看AccountID的内容

db.clo1.update({clo1ID:1},{"$set":{"Age":20}})

db.clo1.remove({clo1ID:1})    //根据条件删除

db.clo1.drop()   //删除所有文档,即删除组合

db.printCollectionStats()   //查看集合状态


MongoDB副本集(repl set)

副本集,这种模式下有一个主(primary),多个从(secondary),只读。支持给他们设置权重,当主宕掉后,权重最高的从切换为主(备用的权重需要比其他的高)。此架构中,可以建立一个仲裁的角色,只负责裁决,而不存储数据(也是一个Mongodb的数据库),读写数据都在主上,要实现负载均衡的目标需要手动指定读库目标server。

修改配置文件   /etc/mongod.conf

replication:

test01

mongod

use admin

>  config={_id:"test01",members:[{_id:0,host:"192.168.1.88:27017"},{_id:1,host:"192.168.1.89:27017"},{_id:2,host:"192.168.1.90:27017"}]}

>    rs.initiate(config)   //查看状态rs.status() 可能不需要执行下面步骤

>    rs.add("192.168.1.89")

>    rs.add("192.168.1.90")

>   rs.status() 查看状态

如果两个从上的状态 为  “stateStr”:"STARTUP",则需要如下操作:

> var config={_id:"test01",members:[{_id:0,host:"192.168.1.88:27017"},{_id:1,host:"192.168.1.89:27017"},{_id:2,host:"192.168.1.90:27017"}]}

> rs.reconfig(config)

再次查看rs.status()状态       SECONDARY

权重设置:默认三台权重都是1,如果任何一台的权重设置比其他的高,则该机器马上切换为primary角色,所以 88:3  89:2 90:1

在主上执行

cfg=rs.conf()

cfg.members[0].priority = 3

cfg.members[1].priority = 2

cfg.members[2].priority = 1

rs.reconfig(cfg)                   //89节点会成为候选主节点


MongoDB备份与恢复

备份库

mongodump -h ip -d dbname -o dir    //-h 后面跟服务ip  -p port  -d database 名字 ,不加则备份所有的数据库, -o 备份的目录

备份指定的集合

mongodump -d mydb -c testc -o /tmp/test     //-c 指定集合的名字

导出集合为json文件

mongoexport -d mydb -c testc -o /tmp/testc.json   //-o后面跟的是文件的名字

恢复所有的库

mongorestore --drop /tmp/123         //--drop 删除原库  然后在恢复  /tmp/123 备份所有库目录的名字

恢复指定的库

mongorestore  -d mydb dir/     //-d 要恢复库的名字  dir 该库备份时所在的目录

恢复集合

mongorestore  -d mydb -c test dir/mydb/testc.bson    //-c需要恢复的集合的名字  dir 备份时的路径 需要指定要恢复的bson文件

导入集合

mongoimport -d mydb -c testc --file /tmp/testc.json


本文出自 “share,open source” 博客,请务必保留此出处http://liqilong2010.blog.51cto.com/3029053/1905724

以上是关于MongoDB -- 介绍安装库管理备份以及恢复的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb备份与恢复

MongoDB数据库的备份恢复

OracleRMAN物理备份技术之管理维护

MongoDB操作-备份和恢复

每篇半小时1天入门MongoDB——3.MongoDB可视化及shell详解

mongodb----数据备份和恢复