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

canal 能夠經過在instance.properties設置canal.instance.filter.regex,來忽略不關心的數據變動的parse和sink處理,優化性能,同時減小沒必要要的存儲開銷。mysql

canal instance啓動時,默認加載instance.properties的canal.instance.filter.regex參數,以後會根據conf/canal/meta.dat文件filter值更新過濾規則。當客戶端調用CanalConnector.subscribe(String filter)方法時,instance再次用filter參數更新過濾規則。sql

meta.dat文件以下:ide

{
	"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。post

若是必定要調用CanalConnector.subscribe(".*\\..*"),那麼能夠設置instance.properties的canal.instance.filter.black.regex參數添加黑名單,過濾非關注庫表。性能

canal版本:1.0.22優化

相關文章
相關標籤/搜索