Skip to content

第一次使用,如何进行配置?

zhangst edited this page Dec 13, 2022 · 18 revisions

本文主要介绍如何使用mongo-shake。

对于使用中的报错,强烈建议先阅读wiki faq文档,如果未能解决请参考提issue必看添加issue。使用的步骤主要为以及几大部分:

  1. 下载代码
  2. 编译代码,或者使用bin目录下现成的二进制文件
  3. 修改配置文件
  4. 启动

1. 下载代码

  直接git clone或者通过二进制包下载。当然,更简单的方式是,用户可以在这里下载到最新的发行的包,免去编译的环节。

2. 编译代码

  如果用户是自己git clone代码的方式,那么可以通过README的Usage中所说的方式进行编译,不过由于依赖的库需要下载。包依赖使用go mod方式,体现下载下依赖的包。下载完以后就可以直接调用build.sh脚本进行编译执行。
  采用第一步里面说的下载最新发行包的方式,不需要编译环节。

3. 修改配置文件

  这部分应该是用户最困惑的地方,为了满足用户的灵活配置,目前开放了较多的配置项,但用户一开始使用并不需要管这么多的项。对于MongoDB到MongoDB的同步需求,用户只需要修改collector.conf的配置文件。通常对于副本集的同步只需要配置两个:源mongodb的地址mongo_urls目的mongodb的地址tunnel.address(与mongodb的url风格一致,db节点以逗号分割,没有用户名密码则不需要配置前缀username:password@),其余默认配置就行。如果有其他的需求再仔细阅读以下各个配置项信息。以下我大概介绍一下不同的需求该如何进行配置。
  这里提供了配置模板,如果场景相同,则只需要修改模板中的对应参数即可成功运行,请参考:配置模板 - 常见场景配置参数   关于各项配置参数的含义请参考:配置参数说明

3.1 如果是分片sharding该如何配置?

  对于源节点是分片的情况,源mongodb的地址mongo_urls需要配置各个分片shard的地址(需要local库的读权限),以分号(;)分隔。tunnel.address需要配置目的端的mongos地址。此外,还需要配置checkpoint.storage.url,这个是用于存储checkpoint的地址。
  另外,需要强调的是,目前sharding模式源端需要关闭balance,暂不支持move chunk的同时进行同步。

3.2 如果目的端是tcp/rpc/kafka/file通道,该如何配置?

  源节点不变,tunnel字段设置成对应的模式,tunnel.address设置对应模式的对应地址,具体参考注释。

3.3 如果是全量+增量模式,如何配置?

  从v1.5版本开始,我们支持了全量,用户可以通过sync_mode配置,all代表全量+增量,document代表仅全量(v2.4以后为full),oplog代表仅增量(v2.4以后为incr)。

3.4 如何启用DDL同步,包括建索引、建表、删库、事务等?

  设置replayer.dml_only等于false(v2.4以后的版本需要设置filter.ddl_enable = true)。

3.5 replayer.executor下面相关配置项是什么意思?

  用于写入的配置,具体请参考配置参数说明

3.6 写完tcp/rpc/kafka后,读取出来发现数据乱码怎么办?

  这是因为写入的数据有控制信息在里面,需要用receiver进行接收,剥离控制信息,然后再进行后续的对接。receiver同样需要编译,编译后位于bin目录。

  剩下详细的信息请参考配置文件的具体说明。

4. 启动

  编译后bin目录下会生成多个架构的collector二进制文件,按自己的平台修改名字,如linux平台则是把collector.linux改为collector

  在bin目录下执行:./collector -conf=collector.conf,log会写入目录log.dir,文件名为log.file,如果希望log打印的屏幕,请额外添加-verbose

Clone this wiki locally