Monstache的安装与使用

Monstache是基于Golang开发的一款用于将MongoDB中的数据同步到Elasticsearch中的工具。
下面是其安装与使用的步骤:
使用版本:
  • MongoDB:4.0.14( 副本集)
  • Elasticsearch: 7.10.1
  • Golang:1.20.1 (https://dl.google.com/go/go1.20.1.linux-amd64.tar.gz)
  • Monstache:rel6 ()

安装Go

1、安装Go,并配置环境变量
创建
(1) 下载Go并解压
(2) 建立go的工作空间,即GOAPTH所指向的目录
创建三个目录
(3) 配置环境变量
使用 vim /etc/profile命令打开环境变量配置文件,并将如下内容写入该文件中。其中GOPROXY用来指定阿里云Go模块代理
(4) 应用环境变量配置

2、Monstache说明

(1)Monstache-Mongodb-Elasticsearch 版本关系:

Monstache version
Git branch (used to build plugin)
Docker tag
Description
Elasticsearch
MongoDB
Status
6
rel6
rel6, latest
MongoDB, Inc. go driver
Version 7+
Version 3.6+
Supported
5
rel5
rel5
MongoDB, Inc. go driver
Version 6
Version 3.6+
Supported
4
master
rel4
mgo community go driver
Version 6
Version 3
Deprecated
3
rel3
rel3
mgo community go driver
Versions 2 and 5
Version 3
Deprecated

(2)Monstache配置

参数
说明
mongo-url
MongoDB实例的主节点访问地址。可在实例的基本信息页面获取,获取前需配置MongoDB实例的白名单,即在白名单中添加安装Monstache的ECS实例的内网IP地址,详情请参见mongo-url
elasticsearch-urls
Elasticsearch实例的访问地址,格式为http://<Elasticsearch实例的内网地址>:9200。
direct-read-namespaces
指定待同步的集合,详情请参见direct-read-namespaces
change-stream-namespaces
如果要使用MongoDB变更流功能,需要指定此参数。启用此参数后,oplog追踪会被设置为无效,详情请参见change-stream-namespaces
namespace-regex
通过正则表达式指定需要监听的集合。此设置可以用来监控符合正则表达式的集合中数据的变化。
elasticsearch-user
访问Elasticsearch实例的用户名,默认为elastic。 注意 实际业务中不建议使用elastic用户,这样会降低系统安全性。建议使用自建用户,并给予自建用户分配相应的角色和权限。
elasticsearch-password
对应用户的密码。elastic用户的密码在创建实例时指定,如果忘记可进行重置
elasticsearch-max-conns
定义连接Elasticsearch的线程数。默认为4,即使用4个Go线程同时将数据同步到Elasticsearch。
dropped-collections
默认为true,表示当删除MongoDB集合时,会同时删除Elasticsearch中对应的索引。
dropped-databases
默认为true,表示当删除MongoDB数据库时,会同时删除Elasticsearch中对应的索引。
resume
默认为false。设置为true,Monstache会将已成功同步到ES的MongoDB操作的时间戳写入monstache.monstache集合中。当Monstache因为意外停止时,可通过该时间戳恢复同步任务,避免数据丢失。如果指定了cluster-name,该参数将自动开启,详情请参见resume
resume-strategy
指定恢复策略。仅当resume为true时生效,详情请参见resume-strategy
verbose
默认为false,表示不启用调试日志。
cluster-name
指定集群名称。指定后,Monstache将进入高可用模式,集群名称相同的进程将进行协调,详情请参见cluster-name
mapping
指定ES索引映射。默认情况下,数据从MongoDB同步到ES时,索引会自动映射为数据库名.集合名 。如果需要修改索引名称,可通过该参数设置,详情请参见Index Mapping
1)进入安装路径
(2)使用命令下载或手动上传安装包
 
1)从git库下载
若提示下载失败需先下载git,使用yum install -y git命令
2)手动上传
进入安装目录,安装
安装完成查看版本
4、配置实时同步任务

(1)进入Monstache安装目录,创建并编辑配置文件

进入config目录,编辑创建配置文件
文件内容如下

注:

1)如果不设置mapping,那么同步到es的索引默认为mongoDB的数据库名.集合名
2)monstache是根据mongoDB的oplog来同步更新的,因此需要开启mongo的副本集才可以
3)当mongo有密码认证时mongoUrl需要改为
mongodb://用户:密码@IP:PORT/数据库名称?authSource=数据库名称&authMechanism=SCRAM-SHA-1,同时这个地址要为mongoDB主节点访问地址
4)direct-read-namespaces表示初始化会全量同步到es,而change-stream-namespaces只会同步有更改变化的
5)namespace-regex不设置时默认同步mongoDB中所有数据的更改变化,可以指定只同步哪个或哪些集合的增删改

(2)配置自启

脚本内容
注:MONSTACHE_OPTS位置是在GO的安装目录下

(3)启停相关

 

© ljl 2021 - 2026