Canal系列——问题杂记

今天碰到一个问题,某个平日正常运行的同步任务,突然报错,显示某个表不存在,如图

开始以为是dba回收了canal用户的权限,后来分析得知,有users表的删除操作,这样导致在读取binlog日志的时候,再去源库里查表字段名字时候报错。

binlog日志是不带字段名称的,如下:

BINLOG '
4T5wWxMqgtqzQAAAAIsBAAAAAIkFAAAAAAEACGZhc3RkYXRhABF0ZXN0X2Zhc3RkYXRhXzI1MQAD
AxISAgAABg==
4T5wWxcqgtqzJwAAALIBAAAAAIkFAAAAAAEAA//8UZE8AZmgmWGZ
'/*!*/;
### INSERT INTO `fastdata`.`test_fastdata_251`
### SET
### @1=20746577 /* INT meta=0 nullable=0 is_null=0 */
### @2='2018-08-12 22:06:25' /* DATETIME(0) meta=0 nullable=1 is_null=0 */
### @3=NULL /* DATETIME(0) meta=0 nullable=1 is_null=1 */
# at 434
#180812 22:06:25 server id 3017441834 end_log_pos 461 Xid = 65752181
COMMIT/*!*/;

通过使用黑名单,在binglog进行过滤解决。

所以使用canal过程中,需要与dba约定,一般不删除表,不删除字段,避免遇到上述问题。

猜你喜欢

转载自blog.csdn.net/andy_wcl/article/details/81632031