MongoDB的「Linux」安装及基本使用

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
简介: MongoDB的「Linux」安装及基本使用

MongoDB的「Linux」安装及基本使用


ad61faea5ea343a28fe757431d8517ed.jpeg



0. 写在前面

  • Linux: Ubuntu Kylin16.04 
  • 集群搭建方式: 伪分布式 
  • MongoDB: MongoDB3.2.7 
  • 部署方式: 单机部署 


1. 下载并安装MongoDB


  • [官网下载](https://www.mongodb.com/try/download/community)

https://www.mongodb.com/try/download/community


选择 Community Server 下载即可


- 解压

root@node01:~$ tar-zxvf mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz -C /usr/local


- 配置环境变量

root@node01:~$ vim ./.bashrc


  • 添加如下内容
#MongoDBexportMONGODB_HOME=/usr/local/mongodb-3.2.7
exportPATH=$PATH:$MONGODB_HOME/bin


  • 记得source使环境变量生效
root@node01:~$ source ./.bashrc


  • 查看版本号
root@node01:~$ mongo--versionMongoDB shell version: 3.2.7


2. 启动方式

2.1 直接启动

  • 直接启动,配置参数在命令行中声明


提前创建MongoDB服务的 数据存储目录日志目录 

root@node01:/usr/local/mongodb-3.2.7$ mkdir-p ./data/db
root@node01:/usr/local/mongodb-3.2.7$ mkdir-p ./log


命令行启动「--fork」

root@node01:/usr/local/mongodb-3.2.7$ mongod--dbpath data/db --logpath log/mongod.log --fork


停止服务使用「--shutdown」

root@node01:/usr/local/mongodb-3.2.7$ mongod--dbpath data/db --logpath log/mongod.log --shutdown


2.2 以「配置文件」方式启动

有两种方式

2.2.1 使用默认配置文件

默认配置文件是: /etc/mongod.conf 

root@node01:/usr/local/mongodb-3.2.7$ mongod-f /etc/mongod.conf


2.2.2 自定义配置文件


  • 新建目录,分别用来存储数据和日志:
#数据存储目录mkdir-p /mongodb/single/data/db
#日志存储目录mkdir-p /mongodb/single/log


  • 新建并修改配置文件
vim /mongodb/single/mongod.conf


配置文件的内容如下:

systemLog:
#MongoDB发送所有日志输出的目标指定为文件# #The path of the log file to which mongod or mongos should send all diagnostic logging information  destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径  path: "/mongodb/single/log/mongod.log"#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。  logAppend: truestorage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。##The directory where the mongod instance stores its data.Default Value is "/data/db".  dbPath: "/mongodb/single/data/db"  journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。    enabled: trueprocessManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。  fork: truenet:
#服务实例绑定的IP,默认是localhost  bindIp: localhost
#bindIp#绑定的端口,默认是27017  port: 27017


  • 启动服务
root@node01:/usr/local/mongodb-3.2.7$ mongod--config /mongodb/single/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3286child process started successfully, parent exiting


强烈建议自己创建配置文件,使用第二种方式启动服务,本文讲述均以此种方式


- 查看服务进程

root@node01:/usr/local/mongodb-3.2.7$ ps-ef | grep mongod
root       32861016:35 ?        00:00:23 /usr/local/mongodb-3.2.7/bin/mongod -f /mongodb/single/mongod.conf
root       34213086017:30 pts/0    00:00:00 grep--color=auto mongod


3. 自定义配置文件启动MongoDB服务失败解决方法

  • 报错信息
解决“Error parsing YAML config file: yaml-cpp: error at line 2, column 13: illegal map value”(安装服务)
try '/usr/local/mongodb-3.2.7/bin/mongod --help' for more information
  • 检查配置文件是否写错
  • yaml格式问题

yaml前置芝士

YAML的基本语法规则:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格。(可以将你的ide的tab按键输出替换成4个空格)
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • # 表示注释


第三小点尤为重要, 不要使用Tab键 实现缩进,请用 空格 实现缩进


YAML格式使用KV方式 : 表示,以空格作为缩进,若value存在,在之后的 : 后面,即value值的前面需要

紧跟一个空格;如: destination: file 


4. 基本使用

  • 查看数据库/集合
> show dbs;
local  0.000GB


> use dbtest
> show collections


- 查找数据

> db.colltest.find()
{ "_id" : 11, "item" : "Pencil", "qty" : 50, "type" : "no.2" }
{ "_id" : ObjectId("6329f410665960c08e8943bf"), "_item" : "pen", "qty" : 20 }
{ "_id" : ObjectId("6329f410665960c08e8943c0"), "item" : "eraser", "qty" : 25 }


- 删除数据库

db.dropDatabase()


  • 数据库操作
> db.help()
DB methods:
  db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ]
  db.auth(username, password)
  db.cloneDatabase(fromhost)
  db.commandHelp(name) returns the help for the command
  db.copyDatabase(fromdb, todb, fromhost)
  db.createCollection(name, { size : ..., capped : ..., max : ... } )
  db.createUser(userDocument)
  db.currentOp() displays currently executing operations in the db
  db.dropDatabase()
  db.eval() - deprecated
  db.fsyncLock() flush data to disk and lock server for backups
  db.fsyncUnlock() unlocks server following a db.fsyncLock()
  db.getCollection(cname) same as db['cname'] or db.cname
  db.getCollectionInfos([filter]) - returns a list that contains the names and options of the db's collections  db.getCollectionNames()  db.getLastError() - just returns the err msg string  db.getLastErrorObj() - return full status object  db.getLogComponents()  db.getMongo() get the server connection object  db.getMongo().setSlaveOk() allow queries on a replication slave server  db.getName()  db.getPrevError()  db.getProfilingLevel() - deprecated  db.getProfilingStatus() - returns if profiling is on and slow threshold  db.getReplicationInfo()  db.getSiblingDB(name) get the db at the same server as this one  db.getWriteConcern() - returns the write concern used for any operations on this db, inherited from server object if set  db.hostInfo() get details about the server's host
  db.isMaster() check replica primary status
  db.killOp(opid) kills the current operation in the db
  db.listCommands() lists all the db commands
  db.loadServerScripts() loads all the scripts in db.system.js
  db.logout()
  db.printCollectionStats()
  db.printReplicationInfo()
  db.printShardingStatus()
  db.printSlaveReplicationInfo()
  db.dropUser(username)
  db.repairDatabase()
  db.resetError()
  db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into { cmdObj : 1 }
  db.serverStatus()
  db.setLogLevel(level,<component>)
  db.setProfilingLevel(level,<slowms>) 0=off 1=slow 2=all
  db.setWriteConcern( <write concern doc> ) - sets the write concern for writes to the db
  db.unsetWriteConcern( <write concern doc> ) - unsets the write concern for writes to the db
  db.setVerboseShell(flag) display extra information in shell output
  db.shutdownServer()
  db.stats()
  db.version() current version of the server


  • 停止关闭服务

停止服务的方式有两种: 快速关闭标准关闭 ,下面依次说明:

(一)快速关闭方法(快速,简单,数据可能会出错)

目标:通过系统的kill命令直接杀死进程:

杀完要检查一下,避免有的没有杀掉。

【补充】

如果一旦是因为数据损坏,则需要进行如下操作(了解):

1)删除lock文件:

rm-f /mongodb/single/data/db/*.lock

2)修复数据:

/usr/local/mongdb-3.2.7/bin/mongod --repair--dbpath=/mongodb/single/data/db


(二)标准的关闭方法(数据不容易出错,但麻烦):

目标:通过mongo客户端中的shutdownServer命令来关闭服务

主要的操作

//客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。
mongo --port27017//#切换到admin库use admin
//关闭服务
db.shutdownServer()


需要使用admin数据库,官方说明如下:

db.shutdownServer()
Shuts down the current mongod or mongos process cleanly and safely.
This operation fails when the current database is not the admin database.
This command provides a wrapper around the shutdown command.


> db.shutdownServer()
server should be down...
2022-09-20T17:37:40.772+0800 I NETWORK  [thread1] trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2022-09-20T17:37:40.773+0800 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2022-09-20T17:37:40.773+0800 I NETWORK  [thread1] reconnect 127.0.0.1:27017 (127.0.0.1) failed failed


注意: 这里failed不是停止服务失败

见下方MongoDB Community的论坛回答

[链接]


https://www.mongodb.com/community/forums/t/db-shutdownserver-giving-connection-error/29333

There is no problem here. You shutdown the server. It is normal that the mongo cannot connect to the server, it is now down. Just exit the shell.


这里没有问题。你关闭了服务器。 mongo连接不上服务器是正常的,现在宕机了。只需退出外壳。






5. 参考

https://www.runoob.com/mongodb/mongodb-linux-install.html
https://www.runoob.com/w3cnote/yaml-intro.html



相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
12天前
|
Oracle 关系型数据库 Linux
linux8安装oracle 11g遇到的问题记录
Oracle 11g在Linux 8上安装时会遇到link编译环节的问题。官方建议忽略安装中的链接错误,安装完成后应用DBPSU 11.2.0.4.240716补丁及一次性补丁33991024,再重新编译二进制文件,并配置监听器和数据库。但因11g已退出服务期,这些补丁需付费获取。网上信息显示22年1月的PSU补丁也可解决问题,找到该补丁后按常规方式打补丁即可。如有需求或疑问可咨询我。
54 20
|
4天前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
44 7
|
1月前
|
Linux Python
Linux 安装python3.7.6
本教程介绍在Linux系统上安装Python 3.7.6的步骤。首先使用`yum`安装依赖环境,包括zlib、openssl等开发库。接着通过`wget`下载Python 3.7.6源码包并解压。创建目标文件夹`/usr/local/python3`后,进入解压目录执行配置、编译和安装命令。最后设置软链接,使`python3`和`pip3`命令生效。
|
1月前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
155 20
|
28天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
180 7
|
1月前
|
Unix Linux 编译器
UNIX/Linux 上的安装
UNIX/Linux 上的安装。
52 2
|
2月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
99 4
|
2月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
87 5
|
2月前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
324 0
|
2月前
|
存储 NoSQL 网络协议
【赵渝强老师】MongoDB的安装与访问
本文介绍了在Linux系统上安装和部署MongoDB的详细步骤,包括安装依赖包、解压安装包、配置环境变量、创建数据目录及启动服务等。文中还提供了相关命令示例和注意事项,帮助用户顺利完成MongoDB的安装与配置。