mtools介绍
mtools是一套基于Python实现的MongoDB工具集,其包括MongoDB日志分析、报表生成及简易的数据库安装等功能。它由MongoDB原生的工程师单独发起并做开源维护,目前已经有大量的使用者。
mtools所包含的一些常用组件如下:
- mlaunch支持快速搭建本地测试环境,可以是单机、副本集、分片集群。
- mlogfilter日志过滤组件,支持按时间检索慢查询、全表扫描操作,支持通过多个属性进行信息过滤,支持输出为JSON格式。
- mplotqueries支持将日志分析结果转换为图表形式,依赖tkinter(Python图形模块)和matplotlib模块。
- mlogvis支持将日志分析结果转换为一个独立的HTML页面,实现与mplotqueries同样的功能。
|--------------|-----------------------------|
| Tools | Description |
| mlogfilter | 合并、分割日志文件,过滤慢查询,集合扫描,格式转换等 |
| mloginfo | 统计日志内的数据库信息(启停、连接、集群状态等) |
| mplotqueries | 日志转化为图表形式 |
| mlogvis | 日志转化为HTML页面,与mplotqueries类似 |
| mlaunch | 快速搭建本地测试环境(单机、集群、分片) |
http://blog.rueckstiess.com/mtools/
安装mtools
环境准备
- mtools需要调用MongoDB的二进制程序来启动数据库,因此需保证Path路径中包含{MONGODB_HOME}/bin这个目录
- 需要安装Python环境,需选用Python 3.7、3.8、3.9版本。 Centos7安装Python3.9
pip安装
安装依赖
java
pip3 install python-dateutil
pip3 install psutil pymongo
安装mtools
java
pip3 install mtools
通过源码安装
Release mtools 1.6.4 · rueckstiess/mtools · GitHub
java
wget https://github.com/rueckstiess/mtools/archive/refs/tags/v1.6.4.tar.gz
#解压后进入mtools
python setup.py install
使用mtools创建复制集
java
#准备复制集使用的工作目录
mkdir -p /data/mongo
cd /data/mongo
#初始化3节点复制集
mlaunch init --replicaset --nodes 3
端口默认从27017开始,依次为2017,27018,27019
查看复制集状态
java
mongo --port 27017
replset:PRIMARY> rs.status()
使用mtools创建分片集群
java
#准备分片集群使用的工作目录
mkdir /data/mongo-cluster
cd /data/mongo-cluster/
# 执行mlaunch init初始化集群
mlaunch init --sharded 2 --replicaset --node 3 --config 3 --csrs --mongos 3 --port 27050
选项说明
- --sharded 2:启用分片集群模式,分片数为2。
- --replicaset --nodes 3:采用3节点的复制集架构,即每个分片为一致的复制集模式。
- --config 3 --csrs:配置服务器采用3节点的复制集架构模式,--csrs是指Config Server as a Replica Set
- --mongos 3:启动3个mongos实例进程。
- --port 27050:集群将以27050作为起始端口,集群中的各个实例基于该端口向上递增。
- --noauth:不启用鉴权。
- --arbiter 向复制集中添加一个额外的仲裁器
- --single 创建单个独立节点
- --dir 数据目录,默认是./data
- --binarypath 如果环境有二进制文件,则不用指定
如果执行成功,那么片刻后可以看到如下输出:
检查分片实例
mlaunch list命令可以对当前集群的实例状态进行检查
此时可以看到各个实例的运行状态,包括进程号以及监听的端口等。
java
# 显示标签
mlaunch list --tags #
显示启动命令
mlaunch list --startup
连接mongos,查看分片实例的情况
java
mongo --port 27050
mongos> db.adminCommand({listShards:1})
停止、启动
如果希望停止集群,则可以使用mlaunch stop命令
再次启动集群,可以使用mlaunch start命令
使用mtools搭建测试集群是相当方便的,相比手工搭建的方式可缩减大量的时间。