MongoDB的日常维护和复制集

  • 日常维护
    • 备份与回复管理
      • 导入导出
      • 备份与恢复
      • 克隆(克隆集合)
    • 安全管理
      • 监控
      • 进程管理
      • 授权启动

日常维护

MongoDB日常维护主要包括数据库的备份恢复、安全管理和数据库状态监控

备份与回复管理

在MongoDB中备份管理包括导入导出、备份与恢复、复制数据库和克隆集合等操作

导入导出

可以使用mongoexport 和 mongoimport 命令来导出导入 MongoDB 的数据

  • mongoexport 命令可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据
  • mongoimport 命令可以把一个特定格式文件中的内容导入到指定的collection中。该工具可以导入JSON / CSV 格式的数据
  1. 批量创建数据
for(var i=1;i<=1000;i++){db.users.insert({'id':i,'name':'maomao'});}而后使用db.users.find(),会发现只会出现20行,这是因为数据库默认只会出现20行
  1. 导出数据
mongoexport -d test -c 表格 -o 储存位置/表名.json[root@mongodb bin]# mongoexport -d test -c users -o /home/mao.json
2021-04-19T10:01:49.406-0400    connected to: localhost
2021-04-19T10:01:49.416-0400    exported 1000 records[root@mongodb bin]# ls /home
mao.json  maomao
  1. 模拟故障
导入数据后模拟数据表格丢失
> db.users.drop()
true> show tables
comment
system.indexes
zhu
  1. 恢复
恢复数据mongoimport -d 库名 -c 表名 --file json文件路径[root@mongodb bin]# mongoimport -d test -c users --file /home/mao.json
2021-04-19T10:05:33.264-0400    connected to: localhost
2021-04-19T10:05:33.273-0400    imported 1000 documents
  1. 验证
> db.users.findOne()
{"_id" : ObjectId("607d8cdd5c684f0ac406a9ce"),"id" : 2,"name" : "maomao"
}
  1. 导出特定条件的数据
导出特定条件的数据(id大于500)[root@mongodb bin]# mongoexport -d test -c users -q '{"id":{"$gt":500}}' -o /home/mao500.json
2021-04-19T10:11:35.345-0400    connected to: localhost
2021-04-19T10:11:35.349-0400    exported 500 records
  1. 验证
[root@mongodb bin]# head -10 mao500.json
{"_id":{"$oid":"607d8cdd5c684f0ac406abc1"},"id":501.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc2"},"id":502.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc4"},"id":504.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc5"},"id":505.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc6"},"id":506.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc7"},"id":507.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc8"},"id":508.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc9"},"id":509.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abca"},"id":510.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abcb"},"id":511.0,"name":"maomao"}
  1. 导入特定条件的数据
[root@mongodb bin]# mongoimport -d mao -c users --file /home/mao500.json 测试
> use mao
switched to db mao
> show tables
system.indexes
users
> db.users.findOne()
{"_id" : ObjectId("607d8cdd5c684f0ac406abc1"),"id" : 501,"name" : "maomao"
}

备份与恢复

MongoDB中可以使用mongodump 命令来备份MongoDB 的数据,该命令可以导出所有数据到指定目录中,mongodump 命令可以通过参数指定导出的数据量级转存的服务器

mongodump -h dbhost -d dbname -o db备份路径
[root@mongodb home]# mkdir /home/backup
[root@mongodb home]# mongodump -h 127.0.0.1:27017 -d mao -o /home/backup/
2021-04-19T10:22:52.442-0400    writing mao.users to
2021-04-19T10:22:52.454-0400    done dumping mao.users (500 documents)
[root@mongodb home]# ll /home/backup/
total 0
drwxr-xr-x 2 root root 51 Apr 19 10:22 mao
[root@mongodb home]# cd backup/mao/
[root@mongodb mao]# ls
users.bson  users.metadata.json

使用mongorestore命令来恢复备份的数据

mongostore -h dbhost -d dbname --dir=/数据路径
[root@mongodb mao]# mongorestore -h127.0.0.1:27017 -d mao1 --dir=/home/backup/mao/
2021-04-19T10:26:42.560-0400    the --db and --collection args should only be used when restoring from a BSON file. Other use
s are deprecated and will not exist in the future; use --nsInclude instead2021-04-19T10:26:42.560-0400  building a list of collections to restore from /home/backup/mao dir
2021-04-19T10:26:42.561-0400    reading metadata for mao1.users from /home/backup/mao/users.metadata.json
2021-04-19T10:26:42.645-0400    restoring mao1.users from /home/backup/mao/users.bson
2021-04-19T10:26:42.688-0400    no indexes to restore
2021-04-19T10:26:42.688-0400    finished restoring mao1.users (500 documents)
2021-04-19T10:26:42.688-0400    done> show dbs
admin  0.078GB
local  0.078GB
mao    0.078GB
mao1   0.078GB  # 还原的库
test   0.078GB

克隆(克隆集合)

在MongoDB中可以将数据库中的集合进行克隆,这里将mao 数据库中的users集合克隆到另外一个实例

启动另外一个实例(instance),一个实例就是内存空间。
mongod -f /usr/local/mongodb/bin/mongodb2.conf netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:27018         0.0.0.0:*               LISTENmongo --port 27018    # 加端口号克隆数据
> db.runCommand({"cloneCollection":"mao.users","from":"127.0.0.1:27017"})
{ "ok" : 1 }> show dbs
local  0.078GB
mao    0.078GB> use mao
switched to db mao> show tables
system.indexes
users> db.users.findOne()
{"_id" : ObjectId("607d8cdd5c684f0ac406abc1"),"id" : 501,"name" : "maomao"

安全管理

MongoDB安全管理主要包括MongoDB 的安全访问控制和用户权限分配

监控

修改配置文件
vim mongodb1.conf
添加
bind_ip=192.168.188.101
port = 27017然后停止服务
mongod -f mongodb1.conf  --shutdown开启监控
方法一:命令行开启,临时,下次重启失效
mongod -f /usr/local/mongodb/bin/mongodb1.conf --httpinterface[root@mongodb ~]# ss -ntl
State       Recv-Q Send-Q                 Local Address:Port                                Peer Address:Port
LISTEN      0      128                  192.168.188.101:27017                                          *:*   方法二:修改配置文件,永久生效
在配置文件下面添加
httpinterface=true

在浏览器中登录进行访问:自身ip地址+28017端口号

绑定ip和端口之后 登录必须加上 --host
mongo --host 192.168.188.101:27017

进程管理

  • 查看当前正在运行的进程

    db.currentOp()
    杀死高消耗的进程
    db.killOp(268)
    
  • ”小驼峰” killOp

  • “大驼峰” StudentOp

授权启动

可以配置授权用户来访问MongoDB,启动时必须指定auth=true,否则授权不起作用

创建管理用户

db.createUser({user: "用户名",pwd: "密码",roles: [ { role: "root", db: "管理库名" } ]}
)
> db.createUser(
... {... user:'root',
... pwd:'123',
... roles:[{role:'root',db:'admin'}]
... }
... )
Successfully added user: {"user" : "root","roles" : [{"role" : "root","db" : "admin"}]
}

创建普通用户

db.createUser({user:"xiaotian",pwd:"123",roles:[{role:"readWrite",db:"mao"}]})

验证

> db.auth('xiaotian','123')
1返回值为1说明验证成功

开启用户验证

vim mongodb1.conf
添加
auth=true

验证用户 方法1

mongod -f /usr/local/mongodb/bin/mongodb1.conf  --shutdownmongod -f /usr/local/mongodb/bin/mongodb1.confmongo --host 192.168.188.101:27017> show dbs
2021-04-19T10:57:37.163-0400 E QUERY    [thread1] Error: listDatabases failed:{"ok" : 0,"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }","code" : 13,"codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:814:19
shellHelper@src/mongo/shell/utils.js:704:15
@(shellhelp2):1:1> db.auth("root","123")
1
> show dbs
admin  0.078GB
local  0.078GB
mao    0.078GB
mao1   0.078GB
test   0.078GB> use mao
switched to db mao
> db.auth("xiaotian","123")
1> show tables;
system.indexes
users

验证用户 方法2

mongo  -uroot -proot 192.168.100.101:27017/adminshow dbs

删除账号xiaotian

db.dropUser("xiaotian");
false
> use mao
switched to db mao
> db.dropUser("xiaotian");
true

MongoDB——MongoDB的日常维护相关推荐

  1. PHP系统管理mongodb,MongoDB的日常维护管理

    主要介绍了日常运行维护的管理工具 MongoDB的日常维护包括使用配置文件,设置访问控制,Shell交互,系统监控和管理,数据库日常备份和恢复 启动和停止MongoDB 启动后可以通过数据库的IP加端 ...

  2. MongoDB的日常维护管理

    主要介绍了日常运行维护的管理工具 MongoDB的日常维护包括使用配置文件,设置访问控制,Shell交互,系统监控和管理,数据库日常备份和恢复 启动和停止MongoDB 启动后可以通过数据库的IP加端 ...

  3. MySQL Cluster 日常维护

    在前面几篇文章已经详细介绍了MySQL Cluster的搭建,配置讲解.而且相信大家都掌握了基本用法.现在我们来看看Cluster的日常维护.熟悉日常维护,将有助于工作中更好的管理和使用Cluster ...

  4. 邮件服务器 Postfix+ Cyrus-SASL+cyrus-IMAPD+日常维护

    一,安装Postfix postfix-2.6.5.tar.gz postfix-2.6.5-vda-ng.patch.gz 二,rpm包安装Cyrus-SASL+cyrus-IMAPD 三,Post ...

  5. AIX 操作系统日常维护须知

    AIX 操作系统日常维护须知目 录1. AIX 常用命令简介2. 文档编辑命令3. 如何查看系统出错信息4. 文件系统的操作5. 如何为系统做备份一.AIX 常用命令简介 1. 关机shutdown ...

  6. 企业网络推广专员浅析企业网络推广日常维护要做好

    每个企业网站在运营优化期间都需要做好网站日常维护工作,对于站长来说网站维护工作常常伴随着一些专业技术性较强的问题需要解决,如果企业客户仅仅想要从性价比上强调维护,选择费用低廉的维护公司没有任何价值可言 ...

  7. MQ日常维护操作手册

    假设队列管理器为QMgrName,以下所有使用QMgrName的地方您都可以替换成您维护的mq队列管理器名称. 一.MQ的启动与停止 用root用户启/停需要root用户包含在mqm组中. 1.MQ的 ...

  8. 物理Data Guard的日常维护

    2019独角兽企业重金招聘Python工程师标准>>> 物理Data Guard的日常维护 [日期:2017-01-17] 来源:Linux社区  作者:zydev [字体:大 中 ...

  9. MHA 日常维护命令集

    MHA 日常维护命令集 1.查看ssh登陆是否成功 masterha_check_ssh --global_conf=/etc/masterha/masterha_default.conf --con ...

最新文章

  1. docker日志存放路径
  2. mysql 返回最大值列名_多列求最大值列和列名
  3. .NET环境下每日集成(4):CruiseControl.Net配置注意事项
  4. c语言mergesort 参数,归并排序C语言兑现MergeSort
  5. JAVA imread_利用Matlab中的imread怎么读取图片
  6. STM32 位段详解
  7. oracle删除临时表空间语句,Oracle中临时表空间的清理
  8. python zlib module_python 安装 setuptools Compression requires the (missing) zlib module 的解决方案...
  9. day27 粘包及粘包的解决方案
  10. 模块之序列化模块json
  11. 【软件工程】中国大学软件工程MOOC学习记录
  12. 计算机网络教室环境的作用,网络教室环境与多媒体教室环境相比优势在什么地方...
  13. 10个CSS技巧,极大提升用户体验
  14. Hibernate(八):检索策略
  15. 三运放差分放大电路分析_★三运放差分放大电路
  16. 测试语文水平的软件,语文试卷质量分析
  17. 计算机一级簇型水平统计图,一级计算机考前水平试题及答案解析
  18. Java程序员如何写简历,给大家一个小建议?
  19. 针对中学生的python_初高中学生Python考试试卷
  20. 计算机组成原理八位全加器,计算机组成原理实验报告-八位补码加减法器的设计与实现.docx...

热门文章

  1. hall 状态下,禁用指纹解锁
  2. 牛客网前端刷题(二)
  3. 使用frp搭建自己的内网穿透
  4. mitmproxy安装配合selenium使用教程
  5. 基于html5的网上订餐系统,基于jsp的网上订餐系统
  6. AV1基于机器学习的变换块快速划分
  7. ROMP:Monocular, One-stage, Regression of Multiple 3D People
  8. C语言指针中 *p 和 p 的区别
  9. linux 装tomcat吗,linux下安装tomcat的默认安装目录在哪?
  10. 马尔萨斯人口论与数学模型