mongodb · 28 8 月, 2021 0

mongodb入门—本地安装

最近在工作中遇到了部分文档存储的场景,于是了解了目前比较通用的文档存储的NoSQL解决方案,因此从通用性上对mongodb进行学习,并记录学习中查阅的资料,以及遇到的问题,用于后来参考。

本地环境与mongo版本

由于我的电脑是一个笔记本电脑,并且年代已经久远了,尝试了一番5.0版本后,遇到了很多问题,因此目前主要版本如下:

  • 系统为ubuntu v18.04版本
  • mongodb选择为v4.2.15版本

安装步骤

安装步骤主要来自于mongodb官方文档, 目前主要采用的安装方式为.tgz压缩包的方式,因为我觉得采用packages的方式,会让我忽略很多细节点,因此作为自学,采用压缩包的方式会比较适合.

环境准备

在安装前,需要提前安装依赖组件,具体命令如下:

sudo apt-get install libcurl4 openssl

安装包下载与解压

我当前使用的为mongodb v4.2.15版本,直接下载文件到工作目录, 具体命令如下:

# 下载安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.2.15.tgz

# 解压安装包
tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.2.15.tgz

拷贝命令

拷贝命令主要是将mongodb中的执行命令拷贝到/usr/local/bin中,这样就不用每次都进入到目录执行命令:

sudo cp <mongodb-install-directory>/bin/* /usr/local/bin/

启动MongoDB

启动mongodb,需要对系统部分参数做调整, 其中主要包括以下两个:

  • ulimit中,需要调整open files的数量, 可以通过 ulimit -n 64000进行调整, 具体参考文档
  • 另一部分就是configuration file的配置,但是对于这部分来说不是必须的,因为我们可以command-line的参数形式指定。具体文件配置详情参考官方文档

日志与数据目录创建

在mongodb中主要设计到两个重要目录,数据的存储位置和日志文件位置, 具体创建方式如下:

# 创建数据存储目录
sudo mkdir -p /var/lib/mongo

# 日志目录创建
sudo mkdir -p /var/log/mongodb

# 为文件件分配访问权限, 分配到当前用户
sudo chown ``whoami`` /var/lib/mongo
sudo chown ``whoami`` /var/log/mongodb

启动MongoDB

通过mongod的方式,启动的为本地单实例的mongodb, 具体执行命令如下:

mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongd.log --bind_ip 0.0.0.0 --fork

命令中几个重要的参数:

  • --dbpath : 指定的数据存储的目录
  • --logpath: 指定了日志文件存储目录
  • --bind_ip: 这个命令指定了当前实例监听在具体ip地址上,如果不指定,则默认绑定为127.0.0.1上,只能够本机进行访问。因为我这里需要外部访问, 所以绑定为0.0.0.0. 同时也可以指定--bind_all_ip参数,为所有ip地址都进行绑定(我理解为由多张网卡的时候, 可能每个都进行绑定)。

当命令执行成功后,会看到如下的日志信息:

about to fork child process, waiting until server is ready for connections.
forked process: 11820
child process started successfully, parent exiting

验证服务

验证服务是否启动成功, 可以通过查看日志的方式判断服务是否启动成功:

tail -200 /var/log/mongdb/mongod.log

可以看到日志中已经包含了如下信息:

2021-08-28T14:22:11.082+0800 I NETWORK  [initandlisten] waiting for connections on port 27017
2021-08-28T14:22:11.082+0800 I SHARDING [LogicalSessionCacheReap] Marking collection config.transactions as collection version: <unsharded>
2021-08-28T14:22:12.000+0800 I SHARDING [ftdc] Marking collection local.oplog.rs as collection version: <unsharded>

 

使用MongoDB

当MongoDB启动成功后,我们需要通过shell的方式能够链接mongodb实例,在刚才下载的.tgz包中,包含了shell的客户端, 可以直接使用:

mongo

该命令默认会链接本地的27107接口,相当于下面的命令:

mongo --host localhost --port 27107

启动参数主要为:

  • --host: 设置需要链接的ip地址或者域名
  • --port: 目标实例的端口信息

 

命令文件说明

当我们查看mongo的源文件目录时,发现文件并不多,主要集中在bin目录下,下面主要介绍下bin目录下的命令主要作用:

  • 组件
    • mongod: 数据库服务器, 启动实例主要依靠该命令
    • mongos: 数据分片路由机,路由设置主要依靠这个命令
    • mongo: 链接mongo 实例的客户端, 主要采用javascript
  • 工具
    • mongodump: 用于创建数据库内容的二进制dump文件
    • mongorestore: 从mongodump生成的文件中读取数据,并重新存储到数据库
    • mongoexport: 导出集合中的内容为JSON或者CSV格式
    • mogoimport: 从JSON, CSV, TSV中导入数据
    • mongofiles: 从GridFs中获取,新增,删除文件
    • mongostat: 展示当前mongod/mongos运行状态
    • bsondump: 将BSON文件转换为易读格式文件
    • mongoreplay: 传输快照和响应(capture and replay)工具
    • mongotop: 跟踪读写数据耗费时间
    • install_compass: 为当前平台安装MongoDB Compass