MongoDB-------安装+操作命令+备份的恢复、管理、监控
admin
2023-03-26 15:01:26
0

文章目录

一、MongoDB :
二、Linux 系统安装MongoDB :
  • 第一步:配置 YUM 源仓库
  • 第二步:安装 MongoDB
    三、MongoDB 基础操作
  • 1、基本命令:
  • 2、备份、恢复:
  • 3、安全管理:
  • 4、进程管理:
  • 5、MongoDB 监控:

    一、MongoDB :

    (1)MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

(2)MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

(3)特点:

  • 面向集合存储,易存储对象类型的数据;
  • 模式自由、支持查询、支持动态查询;
  • 支持完全索引,包含内部对象;
  • 支持复制和故障恢复;
  • 使用高效的二进制数据存储,包括大型对象(如视频等);
  • 自动处理碎片,以支持云计算层次的扩展性;
  • 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言;
  • 文件存储格式为BSON(一种JSON的扩展);
  • 可通过网络访问。

二、Linux 系统安装MongoDB :

1、配置 YUM 源仓库
[mongodb-org]

name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

2、安装 MongoDB

yum install mongodb-org -y
修改配置文件:
vim /etc/mongod.conf

bindIp: 0.0.0.0    //监听地址
port: 27017         //监听端口
开启服务:
systemctl start mongod.service
#查看服务启动情况
netstat -natp | grep 27017
启动MongoDB 多实例:
cp -p /etc/mongod.conf /etc/mongod2.conf

vim /etc/mongod2.conf  
//修改以下代码:
     path: /data/mongodb/mongod2.log      //日志文件目录
     dbPath: /data/mongodb/mongo          //数据存储目录
     port: 27018                          //服务器端口

MongoDB-------安装+操作命令+备份的恢复、管理、监控

创建实例的目录和日志文件:
mkdir -p  /data/mongodb/
cd /data/mongodb/
mkdir mongo
#创建日志文件
touch mongod2.log
#给于权限
chmod 777 mongod2.log
启动实例:
mongod -f /etc/mongod2.conf    
mongo --port 27018    //指定实例的端口
netstat -ntap

三、MongoDB 基础操作

1、基本命令:

(1)文档 : 相当于关系数据库的 行 (多个文档组成集合)

(2)集合 : 相当于关系数据库的 表 (多个集合组成数据库)

(3)数据库名特殊作用:

  • admin: 将用户添加到这个库,这个用户继承数据库所有权限;
  • local : 这个库永远不被复制,可以存储限于本地单台服务器的任意集合;
  • config : 当Mongo用于分片设置时,这个库在内部使用,保存分片的相关信息。
 mongo   //进入数据库

> db.version()      //查看版本
> show dbs;         // 查看数据库
> db.getMongo()     //查看当前数据库机器的连接地址
> db.集合名.help     //显示集合操作命令
> show users        //显示用户

(4)具体操作:

>  use school;                       //打开school数据库, 不存在会创建,不建立集合又会删除
> db.createCollection('info')        //创建集合
> db.info.insert({"id":1,"name":"zhangsan","hobby":["game","talk"]})      //添加数据
> db.info.find()                    //查看info集合中所有文档
> show collections                  //查看数据库中所有集合
> db.info.update({"id":10},{$set:{"name":"tom"}})     //更改数据
> db.info.remove({"id":2})         //移除info集合中的id2的数据
> db.info.drop()                   //删除info集合
> db.dropDatabase()               //删除数据库  先use到要删的数据库里在删
> db.info.count()                 //统计有多少条数据

(5)MongoDB 数据类型:

  • String: 字符串,最常用,必须是utf-8
  • Boolean:布尔值,true 或者false
  • Integer:整数
  • Double:浮点数
  • Arrays:数组或者列表,多个值存储到一个键
  • Object:用于嵌入文档,即一个值为一个文档
  • Null:存储null值
  • Binary Data : 二进制数据,用于存储二进制数据
  • Date:存储当前日期或时间unix时间格式

(6)查看数据类型:

> a=db.info.findOne({"id":1})   //查找指定记录并赋予别名a
> typeof(a.id)                  //查看属性类型

2、备份、恢复:

(1)导入导出:

  • 导出:mongoexport
  • 导入:mongoimport
  • 常见选项:
    -d 数据库
    -c 集合
    -o 目录文件.json结尾
    -q 导出数据过滤条件
    -f 导出哪些列
for(var i=1;i<=100;i++)db.info.insert({"id":i,"name":"jack"+i})    //循环写入100条数据
mongoexport -d school -c info -o /opt/info.json        //导出
mongoimport -d school -c info1 --file /opt/info.json  //导入到info1集合
mongoexport -d school -c info1 -q '{"id":{"$eq":10}}' -o /opt/top10.json    //条件导出指定第10行

(2)备份与恢复:

  • 备份:mongodump
  • 恢复:mongorestore
  • 选项:
    -h 指定Mongodb所在服务器的地址也可以指定端口(例:-h 127.0.0.1:27017)
    -d :需要备份的数据库;
    -o :备份数据存放的目录 该目录需提前创建
mkdir /backup                       //创建存放目录
mongodump -d school -o /backup/     //备份school数据库
mongorestore -d school1 --dir=/backup/school    //恢复到school1数据库

④ 复制数据库:


db.copyDatabase("school","school2")     //复制数据库school 到school2中

⑤ 克隆数据库:

把数据库school的info集合 克隆到实例2
先进入实例2的MongoDB
mongo --port 27018
db.runCommand({"cloneCollection":"school.info","from":"192.168.126.130:27017"}) 

3、安全管理:

  • 创建管理用户;
  • 启动是必须指定 auth=true;
  • 可以将用户分配角色;
  • 内置数据库用户角色: read 、 readWrite;
  • 数据库管理员角色: dbAmin 、 dbOwner 、 userAdmin;
  • 超级用户角色 :root
    vim /etc/mongod.conf
auth=true   //添加
mongo
> use admin
> db.createUser({"zkc":"root","pwd":"123","roles":["root"]})
//创建用户zkc  密码123  分配到root角色
> db.auth("root","123")     //验证用户

4、进程管理:

  • 终止正在运行的进程: db.killOp(opid值)、
  • 查看当前正在运行的进程: db.currentOp()
> db.currentOp()       //查看

> db.killOp(4872) //终止4872进程

5、MongoDB 监控:

  • MongoDB提供一些内置工具可以监测数据库的状态信息
  • 查看数据库实例的状态信息: db.serverStatus()
  • 查看数据库的统计信息: db.stats()
  • 此外也可以通过web界面查看系统监控信息需要在配置文件中加入
vim /etc/mongod.conf
httpinterface=true

相关内容

热门资讯

伊朗提议美方在30天内撤销对伊... 据伊朗方面10日消息,知情人士表示,伊朗在其向美方的提议中,要求美国财政部外国资产控制办公室在30天...
特朗普:伊朗的回应“完全不可接... 当地时间5月10日,美国总统特朗普在其社交媒体“真实社交”发文表示,他刚刚读了伊朗那些所谓的“代表”...
训练运行模式缺陷或致AI提供危... 据新华社伦敦5月9日电 英国《自然》杂志网站日前发表文章说,人工智能(AI)聊天机器人可能向用户提供...
原创 都... 其实也很简单,很大一部分人就是找不到成就感。 只能去信这些,几乎没有认知门槛啊。 智商75以上的人,...
“宇宙超级快递小哥”即将出发 ... 新一单“太空快递”即将发货! 近日 天舟十号完成转运和全区合练 各项发射准备工作全部就绪 我国第十艘...
美媒证实一艘美国商船遭伊朗无人... 新华社华盛顿5月10日电 (记者徐剑梅 黄强)据美国福克斯新闻数字网报道,一艘美国商船10日在波斯湾...
特朗普声称伊朗47年来一直在“... 美国总统特朗普于当地时间5月10日在社交媒体发文,“猛烈抨击”伊朗长期“玩弄”美国和世界,同时还痛批...
学生放学回家后又返回学校坠亡,... 学生符某放学后回到家中,后又从家中返回学校,并于当晚从学校教学楼楼顶坠亡。符某父母随后将学校告上法庭...
泽连斯基称乌已向俄方提交100... 当地时间10日,乌克兰总统泽连斯基表示,乌俄双方将以“千人换千人”的方式交换战俘,乌方已向俄方提交了...
国网上海市电力公司举办“明灯引... 5月7日至9日,在第十个“中国品牌日”来临之际,国网上海市电力公司(以下简称“国网上海电力”)以“明...