ManticoreSearch-(安装配置,集群搭建)-学习总结

ManticoreSearch-(安装配置)-学习总结

  • 基础概念
  • 安装搭建
  • 集群搭建(基于K8S)

原文地址 https://blog.csdn.net/liuyij3430448/article/details/135955025

基础概念

Manticore Search是一个专门为搜索设计的多存储数据库,具有强大的全文搜索功能,适用于小型和大型数据集。

作为一个开源数据库(可在GitHub上获得),Manticore Search创建于2017年,是Sphinx搜索引擎的延续。采用了Sphinx的所有最佳特性,并显著改进了它的功能
Manticore Search现在是一个现代、快速、轻量级的数据库,具有完整的功能和出色的全文搜索功能。

Manticore的主要特点是:

  • 超过20个全文运算符和超过20个排名因子
  • 自定义排序
  • 阻止
  • 词元化
  • 停词
  • 同义词
  • 单词形式
  • 字符和单词级别的更先进的token
  • 特有的汉语分词
  • 文本高亮

ManticoreSearch 支持两种方式的存储(详细见《ManticoreSearch-(表操作)-学习总结.md》)

  • row-wise 行存储
  • columnar 列式存

安装搭建

Linux ubuntu安装

注意ubuntu版本至少18 (测试发现16版本的ubuntu系统安装失败)

在这里插入图片描述

lsb_release -a

在这里插入图片描述

安装步骤

wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
sudo dpkg -i manticore-repo.noarch.deb
sudo apt update
sudo apt install manticore manticore-extra

在这里插入图片描述

systemctl start manticore 启动 ManticoreSearch

在这里插入图片描述

在这里插入图片描述

此方案安装的ManticoreSearch 默认已经安装【列存储】

在这里插入图片描述

默认情况下,Manticore 在以下端口等待连接:

  • 用于 MySQL 客户端的端口为 9306
  • 用于 HTTP/HTTPS 连接的端口为 9308
  • 用于其他 Manticore 节点和基于 Manticore 二进制 API 的客户端的端口为 9312

相关命令

当使用 DEB 或 RPM 包安装 Manticore Search 时,searchd 进程可以由操作系统的 init 系统运行和管理,大多数 Linux 版本现在使用 systemd

要检查平台使用的 init 系统
ps --no-headers -o comm 1

Manticore Search服务主要命令:

  • systemctl status manticore 查看manticore 状态
  • systemctl start manticore 启动manticore
  • systemctl stop manticore 停止manticore
  • systemctl restart manticore 重启manticore
  • systemctl is-enabled manticore 查看是否开启开机启动
  • systemctl disable manticore 禁止开机启动
  • systemctl enable manticore 开机启动
  • journalctl -u manticore 查看运行日志

Docker 安装 (单机版)

注意某些版本docker镜像启动后一直阻塞不出现accepting connections或者报错,没找到原因

本例子使用版本 manticoresearch/manticore:6.0.4

测试发现manticoresearch/manticore:4.2.0 , 5.0.2 docker镜像也可以正常使用

docker镜像地址 https://hub.docker.com/r/manticoresearch/manticore

docker镜像地址说明地址 https://github.com/manticoresoftware/docker/tree/6.0.4

几个测试后可以正常使用的镜像地址:

  • 6.0.4 镜像 https://hub.docker.com/layers/manticoresearch/manticore/6.0.4/images/sha256-9d186f65889556f66fd6e98c2d9bb97501ec52bef750784ef9cdb607fdbf59d8?context=explore

  • 5.0.2 镜像 https://hub.docker.com/layers/manticoresearch/manticore/5.0.2/images/sha256-b92224736f99b6e0e692f46e6f83c8f45d2192a69d7848913030b1016fe1404d?context=explore

  • 4.2.0 镜像 https://hub.docker.com/layers/manticoresearch/manticore/4.2.0/images/sha256-b49a09d569838908bd9759d99eaf2807a2f851aadfeff422cf754addbb4bc3ac?context=explore

注意:5.0.2 ,4.2.0 没有安装Manticore Columnar Library 无法使用列存储引擎

Docker 命令启动

注意: 生产使用MmanticoreSearch最好把数据挂载到指定磁盘

例如

  • 1 使用主机 /devops/manticoresearch/data 文件夹来挂载数据盘
  • 2 使用主机 /devops/manticoresearch/manticore.conf 配置文件来作为容器配置文件

manticore.conf 配置文件内容如下:

searchd {listen = 0.0.0.1:9312listen = 0.0.0.0:9306:mysqllisten = 0.0.0.0:9308:httplog = /var/log/manticore/searchd.logquery_log = /var/log/manticore/query.logpid_file = /var/run/manticore/searchd.piddata_dir = /var/lib/manticore
}

在这里插入图片描述

运行ManticoreSearch

docker run -e EXTRA=1 --name manticore -v /devops/manticoresearch/manticore.conf:/etc/manticoresearch/manticore.conf -v /devops/manticoresearch/data:/var/lib/manticore/ -p 9306:9306 -p 9308:9308 -d manticoresearch/manticore:6.0.4

注意如果要开启安装列存储需要指定环境变量:

  • -e EXTRA=1 开启安装列存储和二级索引
  • -e MCL=1 只开启安装列存储
  • -e TZ=Asia/Shanghai 指定容器时区 (测试发现没有效果)

在这里插入图片描述

在这里插入图片描述

安装依赖包可能比较耗时

使用docker logs -f 查看日志 出现 accepting connections 表示启动成功

在这里插入图片描述

测试使用 ManticoreSearch http

建表
curl -sX POST http://localhost:9308/cli -d 'CREATE TABLE testrt ( title text, content text, gid integer)'插入数据
curl -sX POST http://localhost:9308/insert -d'{"index":"testrt","id":1,"doc":{"title":"Hello","content":"world","gid":1}}'查询数据
curl -sX POST http://localhost:9308/search -d ' {"index":"testrt","query":{"match":{"*":"hello world"}}}'

在这里插入图片描述

测试使用 ManticoreSearch Mysql 客户端

使用mysql 命令连接 ManticoreSearch
mysql -h 192.168.0.20 -P 9306
-h 指定ip
-P 指定端口

在这里插入图片描述

可以看到刚才创建的表

可以使用操作mysql的方式操作ManticoreSearch

ManticoreSearch 集群 (基于K8S)

Manticore Search是一个高度分布式的系统,它提供了所有必要的组件来创建一个高可用性和可扩展的搜索数据库包括:

  • 用于分片的分布式表
  • 镜像实现高可用性
  • 可伸缩性的负载平衡
  • 数据安全复制

官网提供一个 基于docker-compose 方式的集群 https://manual.manticoresearch.com/Starting_the_server/Docker#Multi-node-cluster-with-replication 此方式容器部署在同一个机器上

本例子使用k8s来部署Manticore Search,启动两个pod 分别部署在不同的节点服务器上

部署ManticoreSearch

k8s集群结构如下:

在这里插入图片描述

将ManticoreSearch分别部署在u2-node 与 u3-node 并实现与主机卷的挂载。
为了测试当一台ManticoreSearch服务宕机后集群可以继续使用,整体配置文件准备了三个 (真实场景使用一个合并文件即可):

  • a-deploy.yaml 部署A ManticoreSearch
  • b-deploy.yaml 部署B ManticoreSearch
  • service.yaml 配置一个 service 可以访问http 和 mysql

a-deploy.yaml 与 b-deploy.yaml内容基本一致仅修改名称

a-deploy.yaml内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:name: manticore-search-a-dp
spec:replicas: 1selector:matchLabels: app: manticore-search-atemplate:metadata:labels:app: manticore-search-asearch: ms  #一个公共的标签用于service 发现spec:     nodeSelector:   kubernetes.io/hostname:  "u2-node" #直接部署在节点u2-node上# hostname + subdomain 自定义Pod的域名# manticore-search-a-host.manticore-search-a-domain.default.svc.cluster.localhostname: manticore-search-a-hostsubdomain: manticore-search-a-domainvolumes: - name: "msdata"hostPath:  # 宿主机文件夹  保存数据path: /devops/manticoresearch/data- name: "msconfig"hostPath:  # 宿主机文件夹 保存配置文件path: /devops/manticoresearch/config  containers:- name: manticore-search-a-containersimage: manticoresearch/manticore:6.0.4volumeMounts: #容器内部的文件夹# 此配置将容器内部/var/lib/manticore 挂载到 宿主机/devops/manticoresearch/data       - mountPath: "/var/lib/manticore"  #使用volumes:中配置的卷 (msdata)name: "msdata"  - mountPath: "/etc/manticoresearch"   name: "msconfig"          imagePullPolicy: IfNotPresent  #Alwaysenv:- name: "EXTRA" #开启安装列存储和二级索引value: "1"ports: - containerPort: 9308 protocol: TCP name: http - containerPort: 9306 protocol: TCP name: mysql - containerPort: 9312 protocol: TCP name: node     - containerPort: 9315protocol: TCP name: replication
---
# 集群内域名
apiVersion: v1
kind: Service
metadata:name:  manticore-search-a-domain    
spec: selector:app: manticore-search-aclusterIP: None                

service.yaml内容如下:

# http访问service
apiVersion: v1
kind: Service
metadata:name: manticore-search-http
spec:ports:- protocol: TCPport: 9308targetPort: 9308nodePort:  9308name: httpselector:search: mstype: NodePort --- 
# mysql访问service
apiVersion: v1
kind: Service
metadata:name: manticore-search-mysql
spec:ports:- protocol: TCPport: 9306targetPort: 9306nodePort:  9306name: mysqlselector:search: mstype: NodePort

再部署ManticoreSearch之前先在u2-node 与 u3-node主机上创建文件夹和配置文件 用于挂载

在这里插入图片描述

配置文件manticore.conf内容如下:

#!/bin/sh
ip=`hostname -i|rev|cut -d\  -f 1|rev`
cat << EOF
searchd {listen = $ip:9312listen = 0.0.0.0:9306:mysqllisten = 0.0.0.0:9308:httplisten = $ip:9315-9325:replicationlog = /var/log/manticore/searchd.logquery_log = /var/log/manticore/query.logpid_file = /var/run/manticore/searchd.piddata_dir = /var/lib/manticore
}EOF

执行kubectl apply -f 创建容器

在这里插入图片描述

安装过程会下载安装依赖包可能比较耗时

在这里插入图片描述

当出现accepting connections表示启动成功

在这里插入图片描述

测试使用service连接成功

在这里插入图片描述

创建集群

容器部署完成后即可开始创建集群

执行如下步骤:

登录到A容器内部, 使用mysql客户端连接
kubectl exec -it manticore-search-a-dp-6698f9bbcd-gkchh bash创建集群
create cluster mycluster;创建表
create table user(id int ,name string,job string,memo text);为集群添加表
alter cluster mycluster add user;查看集群状态
show status;
show status like '%cluster%';

在这里插入图片描述

完成以上步骤集群创建完成

加入集群

执行如下步骤:

登录到B容器内部, 使用mysql客户端连接
kubectl exec -it manticore-search-b-dp-65995646b6-99n2b bash加入集群(这里使用A容器的域名)
join cluster mycluster at 'manticore-search-a-host.manticore-search-a-domain.default.svc.cluster.local:9312';查看表
show tables;添加一条数据
insert into mycluster:user (id  ,name ,job ,memo )  VALUES ( 1,'刘一江','java程序员','一个程序员小卡拉米');

在这里插入图片描述

再次登录到A容器内部, 使用mysql客户端连接
kubectl exec -it manticore-search-a-dp-6698f9bbcd-gkchh bash查看数据
select * from user;

在这里插入图片描述

一些常用命令:

  • 1 集群中加表: ALTER CLUSTER <cluster_name> ADD <table_name>
  • 2 集群中删表:ALTER CLUSTER <cluster_name> DROP <table_name>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SparkML系列3】特征提取器TF-IDF、Word2Vec和CountVectorizer

本节介绍了用于处理特征的算法&#xff0c;大致可以分为以下几组&#xff1a; 提取&#xff08;Extraction&#xff09;&#xff1a;从“原始”数据中提取特征。转换&#xff08;Transformation&#xff09;&#xff1a;缩放、转换或修改特征。选择&#xff08;Selection&…

15.Golang中的反射机制及应用

目录 概述实践基本应用复杂应用 结束 概述 Golang中的反射用法还是比较简单的 reflect.TypeOf(arg)reflect.ValueOf(arg) 实践 基本应用 package mainimport ("fmt""reflect" )func reflectNum(arg interface{}) {fmt.Println("type ", re…

网络异常案例三_RST

问题现象 在做功能测试的时候&#xff0c;经常看到设备离线的消息&#xff08;MQTT遗嘱&#xff09;。 在终端连接的网络设备上抓包分析&#xff0c;看到终端设备发起大量的RST请求。 151这个设备&#xff0c;7min&#xff0c;重置断开了8个TCP连接&#xff08;mqtt连接&#…

理解部署描述符的元素

理解部署描述符的元素 部署描述符是文件名为web.xml的XML文件&#xff0c;其包含了Web应用程序的配置信息。每个Web应用程序都有一个web.xml文件。web.xml文件的元素可用于指定servlet的初始化参数、不同文件的MIME类型、侦听器类&#xff0c;以及将URL模式映射到servlet上。一…

2024年,AI 掀起数据与分析市场的新风暴

2024 年伊始&#xff0c;Kyligence 联合创始人兼 CEO 韩卿在其公司内部的飞书订阅号发表了多篇 Rethink Data & Analytics 的内部信&#xff0c;分享了对数据与分析行业的一些战略思考&#xff0c;尤其是 AI 带来的各种变化和革命&#xff0c;是如何深刻地影响这个行业乃至…

防御挂马攻击:从防御到清除的最佳实践

挂马攻击&#xff0c;也称为马式攻击&#xff08;Horse Attack&#xff09;&#xff0c;是一种常见的网络攻击手段。攻击者通过在目标服务器或网站中植入恶意程序&#xff0c;以获取系统权限或窃取敏感信息。为了应对这种威胁&#xff0c;本文将重点介绍防御挂马攻击的最佳实践…

AI项目落地成功因素:数据和机器学习模型的选择

构建机器学习模型时&#xff0c;需要考虑几个关键要素&#xff1a;计算能力、算法和数据。公司往往会将大部分资源集中于开发正确的、无偏见的算法&#xff0c;并加大对计算能力的投入&#xff0c;而在运行模型前&#xff0c;数据通常靠边站或完全被抛诸脑后。 如果数据被遗忘&…

C语言——动态内存管理(经典例题)

题1、 为什么会崩溃呢&#xff1f;&#x1f914;&#x1f914;&#x1f914; #include <stdio.h> #include <stdlib.h> #include <string.h>void GetMemory(char** p) {*p (char*)malloc(100); } void Test(void) {char* str NULL;GetMemory(&str);str…

腾讯云幻兽帕鲁Palworld服务器价格表,2024年2月最新

腾讯云幻兽帕鲁服务器价格32元起&#xff0c;4核16G12M配置32元1个月、96元3个月、156元6个月、312元一年&#xff0c;支持4-8个玩家&#xff1b;8核32G22M幻兽帕鲁服务器115元1个月、345元3个月&#xff0c;支持10到20人在线开黑。腾讯云百科txybk.com分享更多4核8G12M、16核6…

力扣hot100 不同路径 多维DP 滚动数组 数论

Problem: 62. 不同路径 文章目录 思路解题方法复杂度朴素DP 思路 讲述看到这一题的思路 解题方法 &#x1f468;‍&#x1f3eb; 卡尔一题三解 复杂度 时间复杂度: &#xff1a; O ( n m ) O(nm) O(nm) 空间复杂度: O ( n m ) O(nm) O(nm) 朴素DP class Solution {p…

查看 npm的一些命令,以及npm config set registry x x x 不生效 解决方案

在 Mac 上查看自己的 npm 源&#xff0c;可以使用以下命令&#xff1a; 打开终端应用程序&#xff08;Terminal&#xff09;。 运行以下命令来查看当前的 npm 配置&#xff1a; npm config list这会显示 npm 的配置信息&#xff0c;包括当前使用的源&#xff08;registry&am…

操作系统基础:死锁

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;OS从基础到进阶 &#x1f426;1 死锁的概念&#x1f9a2;1.1 总览&#x1f9a2;1.2 什么是死锁&#x1f9a2;1.3 死锁、饥饿、死循环的区别&#x1f427;1.3.1 概念&#x1f427;1.3.2 区别…

快速排序|超详细讲解|入门深入学习排序算法

快速排序介绍 快速排序(Quick Sort)使用分治法策略。 它的基本思想是&#xff1a;选择一个基准数&#xff0c;通过一趟排序将要排序的数据分割成独立的两部分&#xff1b;其中一部分的所有数据都比另外一部分的所有数据都要小。然后&#xff0c;再按此方法对这两部分数据分别进…

vue3-深入组件-插槽

插槽 Slots 组件用来接收模板内容 插槽内容与出口 <slot> 元素是一个插槽出口 (slot outlet),&#xff0c;标示了父元素提供的插槽内容 (slot content) 将在哪里被渲染。 插槽内容可以是任意合法的模板内容&#xff0c;不局限于文本。例如我们可以传入多个元素&#xff0…

HTML+CSS:导航栏组件

效果演示 实现了一个导航栏的动画效果&#xff0c;当用户点击导航栏中的某个选项时&#xff0c;对应的选项卡会向左平移&#xff0c;同时一个小圆圈会出现在选项卡的中心&#xff0c;表示当前选项卡的位置。这个效果可以让用户更加清晰地了解当前页面的位置和内容。 Code <…

关于source批量处理sql命令建立数据库后发现中文乱码问题解决方案(Mysql)

今天在使用souce建表的时候发现自己表结构中的中文出现了乱码问题&#xff0c;那么具体的解决方案如下&#xff1a; 首先我们先使用命令行连接自己的数据库 mysql -u root -p 12345 然后使用show variables like "char%"; 如果说你的这个里面不是utf-8那么就是出现了…

第九篇【传奇开心果系列】Python的OpenCV技术点案例示例:目标跟踪

传奇开心果短博文系列 系列短博文目录Python的OpenCV技术点案例示例系列 短博文目录前言二、常用的目标跟踪功能、高级功能和增强跟踪技术介绍三、常用的目标跟踪功能示例代码四、OpenCV高级功能示例代码五、OpenCV跟踪目标增强技术示例代码六、归纳总结 系列短博文目录 Pytho…

maven--将jar包上传到maven中央仓库(公库)

原文网址&#xff1a;maven--将jar包上传到maven中央仓库(公库)-CSDN博客 简介 本文介绍怎样将jar包上传到maven中央仓库(公库)。 当自己有一些公共组件时&#xff0c;上传到maven公库是最好的&#xff0c;这样项目里直接引用即可&#xff0c;不需要在多处修改&#xff0c;而…

【Linux】基本指令(上)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 目录 Xshell快捷键 Linux基本指令 ls指令 pwd指令 cd指令 touch指令 mkdir指令 rmdir指令/rm指令 结语 Xshell快捷键 AltEnter 全屏/取消全屏 Tab 进…

-1- Python环境安装

1、Python安装 1.1、Windows安装Python 进入python官网&#xff1a;Welcome to Python.org点击 download——>all releases&#xff1b;建议选择3.7.2版本&#xff08;网页链接&#xff1a;Python Release Python 3.7.2 | Python.org&#xff09;&#xff1b;下拉&#xf…