-
Notifications
You must be signed in to change notification settings - Fork 446
第一次使用,如何进行配置?
本文主要介绍如何使用mongo-shake。
使用的步骤主要为以及几大部分:
- 下载代码
- 编译代码,或者使用bin目录下现成的二进制文件
- 修改配置文件
- 启动
直接git clone或者通过二进制包下载,我们更建议使用前者方式,因为目前的版本号是通过分支来打的。
用户可以通过README的Usage中所说的方式进行编译,不过由于依赖的库需要下载。所以需要先下载govendor:go get -u github.com/kardianos/govendor
,然后使用govendor进行依赖包的下载(govendor sync
命令),注意:下载依赖包的时候需要配置GOPATH。下载完以后就可以直接调用build.sh
脚本进行编译执行。
用户也可以使用bin目录下的collector二进制文件进行直接运行,但是通常该二进制文件的更新会落后于代码的更新,可以打印版本号-version
进行查看。我们更建议使用编译的方式进行运行。
这部分应该是用户最困惑的地方,为了满足用户的灵活配置,目前开放了较多的配置项,但用户一开始使用并不需要管这么多的项。通常对于副本集的同步只需要配置两个:源mongodb的地址mongo_urls
、目的mongodb的地址tunnel.address
(与mongodb的url风格一致,db节点以逗号分割,没有用户名密码则不需要配置前缀username:password@
),其余默认配置就行。如果有其他的需求再仔细阅读以下各个配置项信息。以下我大概介绍一下不同的需求该如何进行配置。
对于源节点是分片的情况,源mongodb的地址mongo_urls
需要配置各个分片shard的地址,以分号(;)分隔。同理tunnel.address
也是一致的。此外,还需要配置context.storage.url
,这个是用于存储checkpoint的地址。在副本集的情况下,这一项不需要配置,因为默认的checkpoint都会写入源库,默认是mongoshake.ckpt_default
。对于分片集群,由于不知道源mongos的地址,所以需要额外配置checkpoint地址,此处传入的也是一个mongodb的库地址,格式与mongo_urls
保持一致,我们建议配置config-server的地址。
另外,需要强调的是,目前sharding模式源端需要关闭balance,暂不支持move chunk的同时进行同步。
源节点不变,tunnel
字段设置成对应的模式,tunnel.address
设置对应模式的对应地址,具体参考注释。
从v1.5版本开始,我们支持了全量,用户可以通过sync_mode
配置,all
代表全量+增量,document
代表仅全量,oplog
代表仅增量。
设置replayer.dml_only
等于false。
用于写入的配置
-
replayer.executor
字段在目前开源模式下请默认1不要修改。 -
replayer.executor.upsert
字段表示如果update源字段不存在的话,将update操作修改为insert;否则将会持续报错(默认)。 -
replayer.executor.insert_on_dup_update
字段表示如果insert的时候字段已经存在,那么修改为update操作;否则将会持续报错(默认)。 -
replayer.conflict_write_to
如果不为none,将会记录冲突的数据。
这是因为写入的数据有控制信息在里面,需要用receiver进行接收,剥离控制信息,然后再进行后续的对接。receiver同样需要编译,编译后位于bin目录。
剩下详细的信息请参考配置文件的具体说明。
在bin目录下执行:./collector -conf=../conf/receiver.conf,如果希望log打印的屏幕,请额外添加-verbose
。