使用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搭建测试集群是相当方便的,相比手工搭建的方式可缩减大量的时间。

相关推荐
巨龙之路4 分钟前
什么是时序数据库?
数据库·时序数据库
蔡蓝10 分钟前
binlog日志以及MySQL的数据同步
数据库·mysql
是店小二呀1 小时前
【金仓数据库征文】金融行业中的国产化数据库替代应用实践
数据库·金融·数据库平替用金仓·金仓数据库2025征文
炒空心菜菜1 小时前
SparkSQL 连接 MySQL 并添加新数据:实战指南
大数据·开发语言·数据库·后端·mysql·spark
多多*2 小时前
算法竞赛相关 Java 二分模版
java·开发语言·数据结构·数据库·sql·算法·oracle
爱喝酸奶的桃酥2 小时前
MYSQL数据库集群高可用和数据监控平台
java·数据库·mysql
数据库幼崽2 小时前
MySQL 8.0 OCP 1Z0-908 61-70题
数据库·mysql·ocp
码农黛兮_463 小时前
SQL 索引优化指南:原理、知识点与实践案例
数据库·sql
爆肝疯学大模型3 小时前
SQL server数据库实现远程跨服务器定时同步传输数据
运维·服务器·数据库
我来整一篇4 小时前
用Redis的List实现消息队列
数据库·redis·list