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 clone https://github.com/rwynn/monstache.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的安装目录下