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

相关推荐
云和恩墨2 小时前
云计算、AI与国产化浪潮下DBA职业之路风云变幻,如何谋破局启新途?
数据库·人工智能·云计算·dba
明月看潮生2 小时前
青少年编程与数学 02-007 PostgreSQL数据库应用 11课题、视图的操作
数据库·青少年编程·postgresql·编程与数学
阿猿收手吧!2 小时前
【Redis】Redis入门以及什么是分布式系统{Redis引入+分布式系统介绍}
数据库·redis·缓存
奈葵2 小时前
Spring Boot/MVC
java·数据库·spring boot
leegong231112 小时前
Oracle、PostgreSQL该学哪一个?
数据库·postgresql·oracle
中东大鹅3 小时前
MongoDB基本操作
数据库·分布式·mongodb·hbase
夜光小兔纸3 小时前
Oracle 普通用户连接hang住处理方法
运维·数据库·oracle
兩尛5 小时前
订单状态定时处理、来单提醒和客户催单(day10)
java·前端·数据库
web2u5 小时前
MySQL 中如何进行 SQL 调优?
java·数据库·后端·sql·mysql·缓存
Elastic 中国社区官方博客6 小时前
使用 Elasticsearch 导航检索增强生成图表
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索