linux安装mongodb_第二十二章 安装部署(MongoDB)

一、NoSQL简介

  NoSQL(NoSQL = Not Only SQL ),意即”不仅仅是 SQL”。NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至 2009 年趋势越发高涨。NoSQL拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是

一种全新的思维的注入。 

  对 NoSQL 最普遍的解释是”非关联型的”,强调 Key-Value Stores 和文档数据库的优点,而不是单纯的反对 RDBMS。NoSQL 用于超大规模数据的存储。

  用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那 SQL 数据库已经不适合这些应用了, NoSQL 数据库的发展也能很好的处理这些大的数据。

二、MongoDB 

1、简介

  Mongodb 由 C++语言编写的,MongoDB 以一种叫做 BSON(二进制 JSON)的存储形式将数据作为文档存储。

2、数据格式

(1)JSON(JavaScript Object Notation) 

  是一种轻量级的数据交换格式。

  {"FirstName":"ke","LastName":"me","email":"hikeme@aa"}

  取值方式和所有语言中一样,使用 key 获取,字段值的类型可以是 数字、字符串、数组、对象几种。

(2)BSON 

  是一种类 JSON 的一种二进制形式的存储格式,简称 Binary JSON,它和 JSON 一样,支持内嵌的文档对象和数组对象,但是 BSON 有 JSON 没有的一些数据类型,如 Date 和 BinData 类型。

  它的优点是灵活性高,但它的缺点是空间利用率不是很理想。

  BSON 有三个特点:轻量性、可遍历性、高效性。

3、特点

高性能:Mongodb 提供高性能的数据持久性,尤其是支持嵌入式数据模型减少数据库系统上的I/O 操作,索引支持能快的查询,并且可以包括来嵌入式文档和数组中的键

丰富的语言查询:Mongodb 支持丰富的查询语言来支持读写操作(CRUD)以及数据汇总,文本搜索和地理空间索引。

高可用性:Mongodb 的复制工具,成为副本集,提供自动故障转移和数据冗余,

水平可扩展性:Mongodb 提供了可扩展性,作为其核心功能的一部分,分片是将数据分,在一组计算机上。

支持多种存储引擎:WiredTiger 存储引擎和、 MMAPv1 存储引擎和 InMemory 存储引擎。

4、MongoDB 包含的程序

MongoDB Drivers:官方 MongoDB 客户端库提供 C, C ++, C#, Java, Node.JS, Perl, PHP, Python, Ruby和 Scala 驱动程序的参考指南。

MongoDB Stitch:为开发人员提供了一个 API 到 MongoDB 和其他后端服务。保持 MongoDB 的全部功能和灵性,同时受益于强大的系统来配置细粒度的数据访问控制。

MongoDB Atlas:MongoDB 在云中部署,操作和扩展的最佳方式。适用于 AWS, Azure 和 Google Cloud Platform。轻松将数据迁移到 MongoDB Atlas,零停机

MongoDB Cloud Manager:是一个用于管理 MongoDB 部署的软件包。Ops Manager 提供 Ops Manager 监控和 Ops Manager 备份,可帮助用户优化群集并降低操作风险。

MongoDB Charts:可以最快速最简单的创建 Mongodb 可视化图表。

MongoDB Connector for BI:MongoDB 商业智能连接器(BI)允许用户使用 SQL 创建查询,(如 Tableau, MicroStrategy 和 Qlik)对其 MongoDB Enterprise 数据进行可视化,图形化和报告。

MongoDB Compass:通过从集合中随机抽样一个文档子集,为用户提供其 MongoDB 模式的图形视图。采样文件可最大程度地降低对数据库的影响,并能快速产生结果。有关 抽样的更多信息。

MongoDB Spark Connector:使用连接器,您可以访问所有使用 MongoDB 数据集的 Spark 库:用 SQL 进行分析的数据集(受益于自动模式推理),流式传输,机器学习和图形 API。您也可以使用连接器与 Spark Shell。

三、安装软件部署

1、帮助文档:https://docs.mongodb.com/manual/installation/

2、下载软件包

官方下载地址:

https://www.mongodb.com/download-center/community

这里选用 tar 包的安装方式:

https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.13.tgz

#wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.13.tgz

如果没有3.6.13版本,下载3.6.18版本:

#wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.18.tgz

3、规划目录:

软件安装路径:

#mkdir /application/mongo_cluster/ -p

安装存放路径:/server/tools

4、安装依赖包

#yum install libcurl openssl -y

5、解压到指定目录

#tar zxvf mongodb-linux-x86_64-3.6.13.tgz -C /application/mongo_cluster/

#cd /application/mongo_cluster/

创建软连接:

#ln -s mongodb-linux-x86_64-3.6.13 mongodb

创建配置文件目录:

#mkdir /application/mongo_cluster/mongo_27017/{conf,logs,pid} -p

创建数据目录:

# mkdir /data/mongo_cluster/mongo_27017 -p

6、创建用户

#useradd mongo

#echo '123456'|passwd --stdin mongo

更改目录授权:

#chown -R mongo:mongo /application/mongo_cluster

#chown -R mongo:mongo /data/mongo_cluster

#chown -R mongo.mongo /application/mongo_cluster/mongo_27017/conf/mongodb.conf

#chown -R mongo.mongo /data/mongo_cluster/mongo_27017/mongod.lock

#chown -R mongo.mongo /application/mongo_cluster/mongo_27017/logs/mongodb.log

#chown -R mongo.mongo /application/mongo_cluster/mongo_27017/pid/mongod.pid

因为mongodb.log和mongodb.pid所属用户不是mongo,导致启动不了。

7、修改配置文件

YML:对缩进要求非常严格;

写入配置文件:

cat > /application/mongo_cluster/mongo_27017/conf/mongodb.conf << EOF

systemLog:

 destination: file

 logAppend: true

 path: /application/mongo_cluster/mongo_27017/logs/mongodb.log

storage:

 journal:

   enabled: true

 dbPath: /data/mongo_cluster/mongo_27017

 directoryPerDB: true

 wiredTiger:

   engineConfig:

     cacheSizeGB: 1

     directoryForIndexes: true

   collectionConfig:

     blockCompressor: zlib

   indexConfig:

     prefixCompression: true

processManagement:

 fork: true

 pidFilePath: /application/mongo_cluster/mongo_27017/pid/mongod.pid

net:

 port: 27017

 bindIp: 127.0.0.1,192.168.40.137

EOF

配置文件说明:

systemLog:

 destination: file #Mongodb 日志输出的目的地,指定一个 file 或者 syslog,如果指定 file,必须指定

 logAppend: true #当实例重启时,不创建新的日志文件,在老的日志文件末尾继续添加

 path: /application/mongo_cluster/mongo_27017/logs/mongodb.log #日志路径

storage:

 journal: #回滚日志

 enabled: true

 dbPath: /data/mongo_cluster/mongo_27017 #数据存储目录

 directoryPerDB: true #默认 false,不适用 inmemory engine

 wiredTiger:

 engineConfig:

 cacheSizeGB: 1 #将用于所有数据缓存的最大小

 directoryForIndexes: true #默认 false 索引集合 storage.dbPath 存储在数据单独子目录

 collectionConfig:

 blockCompressor: zlib

 indexConfig:

 prefixCompression: true

processManagement: #使用处理系统守护进程的控制处理

 fork: true #后台运行

 pidFilePath: /application/mongo_cluster/mongo_27017/pid/mongod.pid #创建 pid 文件

net:

 port: 27017 #监听端口

 bindIp: 127.0.0.1,192.168.40.137 #绑定 ip

8、配置环境变量:

#echo “”export PATH=/application/mongo_cluster/mongodb/bin:$PATH" >> /etc/profile 

#source /etc/profile

9、启动:

#su mongo

$mongod -f /application/mongo_cluster/mongo_27017/conf/mongodb.conf

$ps -ef |grep mongodb

dffa0cf553e9b82d003764cd4a6bf93b.png

关闭启动:

#mongod -f /application/mongo_cluster/mongo_27017/conf/mongodb.conf --shutdown

10、登录命令:

$mongo redis01:27017

2d32a14dd5187b2c99e452d24c42b14b.png

警告1:

WARNING: The configured WiredTiger cache size is more than 80% of available RAM.

See http://dochub.mongodb.org/core/faq-memory-diagnostics-wt

解决方法:配置文件中cacheSizeGB设置的太大,虚拟机总内存才1G;

cacheSizeGB: 1。增加内存或者在配置文件里把 cash 调小。

警告2:用户访问控制

WARNING: Access control is not enabled for the database.

Read and write access to data and configuration is unrestricted.

解决方法:

security:

  authorization: enabled

警告3:解决大内存页

WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.

We suggest setting it to 'never'

WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.

 We suggest setting it to 'never'

解决方法参考:

https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/

查看状态:

#cat /sys/kernel/mm/transparent_hugepage/enabled

#cat /sys/kernel/mm/transparent_hugepage/defrag

临时关闭:

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

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

永久关闭:

#vim /etc/init.d/disable-transparent-hugepages

#!/bin/bash

### BEGIN INIT INFO

# Provides:          disable-transparent-hugepages

# Required-Start:    $local_fs

# Required-Stop:

# X-Start-Before:    mongod mongodb-mms-automation-agent

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Disable Linux transparent huge pages

# Description:       Disable Linux transparent huge pages, to improve

#                    database performance.

### END INIT INFO

case $1 in

 start)

   if [ -d /sys/kernel/mm/transparent_hugepage ]; then

     thp_path=/sys/kernel/mm/transparent_hugepage

   elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then

     thp_path=/sys/kernel/mm/redhat_transparent_hugepage

   else

     return 0

   fi

   echo 'never' > ${thp_path}/enabled

   echo 'never' > ${thp_path}/defrag

   re='^[0-1]+$'

   if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]]

   then

     # RHEL 7

     echo 0 > ${thp_path}/khugepaged/defrag

   else

     # RHEL 6

     echo 'no' > ${thp_path}/khugepaged/defrag

   fi

   unset re

   unset thp_path

   ;;

esac

脚本权限:

#chmod 755 /etc/init.d/disable-transparent-hugepages

开机启动:

#chkconfig --add disable-transparent-hugepages

立即生效:

#source /etc/init.d/disable-transparent-hugepages

用脚本的方式必须重启服务器,可以先用临时生效。

警告4:relimit 警告

#vim /etc/profile 

ulimit -u 64000 

#source /etc/profile 

重启:mongo 服务

以下是在Linux安装mongodb_exporter并监控mongodb数据库的详细步骤: 1.首先,您需要在Linux服务器上安装mongodb_exporter。您可以从https://github.com/percona/mongodb_exporter/releases下载最新版本的mongodb_exporter。根据您的操作系统和架构选择正确的版本。在本文中,我们将使用“mongodb_exporter-0.18.1.linux-amd64.tar.gz”。 2.下载完毕后,使用以下命令将其解压缩: $ tar -xvf mongodb_exporter-0.18.1.linux-amd64.tar.gz 3.接下来,将解压缩的文件夹移动到“/usr/local/bin”目录下: $ sudo mv mongodb_exporter-0.18.1.linux-amd64/mongodb_exporter /usr/local/bin 4.现在,您需要创建一个名为“mongodb_exporter.service”的systemd服务文件。使用以下命令创建此文件: $ sudo nano /etc/systemd/system/mongodb_exporter.service 5.将以下内容复制到文件中: [Unit] Description=MongoDB Exporter After=network.target [Service] User=root ExecStart=/usr/local/bin/mongodb_exporter [Install] WantedBy=multi-user.target 6.保存并关闭文件。 7.使用以下命令重新加载systemd配置并启动mongodb_exporter服务: $ sudo systemctl daemon-reload $ sudo systemctl start mongodb_exporter.service 8.现在,您的mongodb_exporter已准备好监控您的MongoDB数据库。您可以使用以下命令检查服务是否正在运行: $ sudo systemctl status mongodb_exporter.service 9.最后,您需要在Prometheus配置文件中添加mongodb_exporter的目标。打开Prometheus配置文件“/etc/prometheus/prometheus.yml”,并添加以下内容: - job_name: 'mongodb_exporter' static_configs: - targets: ['localhost:9216'] 10.保存并关闭文件。 11.使用以下命令重新加载Prometheus配置: $ sudo systemctl restart prometheus.service 现在,您已经在Linux上成功安装mongodb_exporter并监控MongoDB数据库。您可以在Prometheus中查看有关MongoDB数据库的指标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值