Skip to content

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

Vinllen Chen edited this page May 17, 2019 · 18 revisions

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

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

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

1. 下载代码

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

2. 编译代码

  用户可以通过README的Usage中所说的方式进行编译,不过由于依赖的库需要下载。所以需要先下载govendorgo get -u github.com/kardianos/govendor,然后使用govendor进行依赖包的下载(govendor sync命令),注意:下载依赖包的时候需要配置GOPATH。下载完以后就可以直接调用build.sh脚本进行编译执行。
  用户也可以使用bin目录下的collector二进制文件进行直接运行,但是通常该二进制文件的更新会落后于代码的更新,可以打印版本号-version进行查看。我们更建议使用编译的方式进行运行。

3. 修改配置文件

  这部分应该是用户最困惑的地方,为了满足用户的灵活配置,目前开放了较多的配置项,但用户一开始使用并不需要管这么多的项。通常对于副本集的同步只需要配置两个:源mongodb的地址mongo_urls目的mongodb的地址tunnel.address(与mongodb的url风格一致,db节点以逗号分割,没有用户名密码则不需要配置前缀username:password@),其余默认配置就行。如果有其他的需求再仔细阅读以下各个配置项信息。以下我大概介绍一下不同的需求该如何进行配置。

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

  对于源节点是分片的情况,源mongodb的地址mongo_urls需要配置各个分片shard的地址,以分号(;)分隔。同理tunnel.address也是一致的。此外,还需要配置context.storage.url,这个是用于存储checkpoint的地址。在副本集的情况下,这一项不需要配置,因为默认的checkpoint都会写入源库,默认是mongoshake.ckpt_default。对于分片集群,由于不知道源mongos的地址,所以需要额外配置checkpoint地址,此处需要配置config-server的地址。
  另外,需要强调的是,目前sharding模式源端需要关闭balance,暂不支持move chunk的同时进行同步。

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

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

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

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

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

  设置replayer.dml_only等于false。

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

  用于写入的配置

  • replayer.executor字段在目前开源模式下请默认1不要修改。
  • replayer.executor.upsert字段表示如果update源字段不存在的话,将update操作修改为insert;否则将会持续报错(默认)。
  • replayer.executor.insert_on_dup_update字段表示如果insert的时候字段已经存在,那么修改为update操作;否则将会持续报错(默认)。
  • replayer.conflict_write_to如果不为none,将会记录冲突的数据。

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

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

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

4. 启动

  在bin目录下执行:./collector -conf=../conf/receiver.conf,如果希望log打印的屏幕,请额外添加-verbose