使用mtools搭建MongoDB复制集和分页集群

mtools介绍

mtools是一套基于Python实现的MongoDB工具集,其包括MongoDB日志分析、报表生成及简易的数据库安装等功能。它由MongoDB原生的工程师单独发起并做开源维护,目前已经有大量的使用者。

mtools所包含的一些常用组件如下:

  1. mlaunch支持快速搭建本地测试环境,可以是单机、副本集、分片集群。
  2. mlogfilter日志过滤组件,支持按时间检索慢查询、全表扫描操作,支持通过多个属性进行信息过滤,支持输出为JSON格式。
  3. mplotqueries支持将日志分析结果转换为图表形式,依赖tkinter(Python图形模块)和matplotlib模块。
  4. mlogvis支持将日志分析结果转换为一个独立的HTML页面,实现与mplotqueries同样的功能。

|--------------|-----------------------------|
| Tools | Description |
| mlogfilter | 合并、分割日志文件,过滤慢查询,集合扫描,格式转换等 |
| mloginfo | 统计日志内的数据库信息(启停、连接、集群状态等) |
| mplotqueries | 日志转化为图表形式 |
| mlogvis | 日志转化为HTML页面,与mplotqueries类似 |
| mlaunch | 快速搭建本地测试环境(单机、集群、分片) |

http://blog.rueckstiess.com/mtools/

安装mtools

环境准备

  1. mtools需要调用MongoDB的二进制程序来启动数据库,因此需保证Path路径中包含{MONGODB_HOME}/bin这个目录
  2. 需要安装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

选项说明

  1. --sharded 2:启用分片集群模式,分片数为2。
  2. --replicaset --nodes 3:采用3节点的复制集架构,即每个分片为一致的复制集模式。
  3. --config 3 --csrs:配置服务器采用3节点的复制集架构模式,--csrs是指Config Server as a Replica Set
  4. --mongos 3:启动3个mongos实例进程。
  5. --port 27050:集群将以27050作为起始端口,集群中的各个实例基于该端口向上递增。
  6. --noauth:不启用鉴权。
  7. --arbiter 向复制集中添加一个额外的仲裁器
  8. --single 创建单个独立节点
  9. --dir 数据目录,默认是./data
  10. --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搭建测试集群是相当方便的,相比手工搭建的方式可缩减大量的时间。

相关推荐
cg50171 小时前
MySQL数据库复杂的增删改查操作
数据库·mysql
虾球xz2 小时前
游戏引擎学习第147天
数据库·学习·游戏引擎
向上的车轮3 小时前
什么是时序数据库?有哪些时序数据库?常见的运用场景有哪些?
数据库·时序数据库
岱宗夫up4 小时前
【Python】Django 中的算法应用与实现
数据库·python·opencv·django·sqlite
比花花解语4 小时前
使用数据库和缓存的时候,是如何解决数据不一致的问题的?
数据库·缓存·数据一致性
YGGP5 小时前
Redis篇:基础知识总结与基于长期主义的内容更新
数据库·redis·缓存
KINICH ahau5 小时前
数据库1-2章
数据库·oracle
我想吃烤肉肉6 小时前
leetcode-sql数据库面试题冲刺(高频SQL五十题)
数据库·sql·leetcode
夏炎正好眠7 小时前
mysql练习
数据库·mysql
NineData7 小时前
NineData 社区版正式上线,支持一键本地化部署!
数据库·程序员