canal配置canal.instance.filter.regex无效

為{幸葍}努か 提交于 2019-12-05 19:55:07

canal 可以通过在instance.properties设置canal.instance.filter.regex,来忽略不关心的数据变更的parse和sink处理,优化性能,同时减少不必要的存储开销。

canal instance启动时,默认加载instance.properties的canal.instance.filter.regex参数,之后会根据conf/canal/meta.dat文件filter值更新过滤规则。当客户端调用CanalConnector.subscribe(String filter)方法时,instance再次用filter参数更新过滤规则。

meta.dat文件如下:

{
	"clientDatas": [{
		"clientIdentity": {
			"clientId": 1001,
			"destination": "canal",
			"filter": "canal\\..*"
		},
		"cursor": {
			"identity": {
				"slaveId": -1,
				"sourceAddress": {
					"address": "127.0.0.1",
					"port": 3306
				}
			},
			"postion": {
				"included": false,
				"journalName": "mysql-bin.000047",
				"position": 15143,
				"serverId": 1,
				"timestamp": 1479809428000
			}
		}
	}],
	"destination": "canal"
}

所以当你只关心部分库表更新时,设置了canal.instance.filter.regex,一定不要在客户端调用CanalConnector.subscribe(".*\\..*"),不然等于没设置canal.instance.filter.regex。

如果一定要调用CanalConnector.subscribe(".*\\..*"),那么可以设置instance.properties的canal.instance.filter.black.regex参数添加黑名单,过滤非关注库表。

canal版本:1.0.22

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!