问题:
[Warning] Slave SQL for channel 'master06': Worker 1 failed executing transaction 'e621408d-1441-11eb-a66e-fa163ed39f3f:5' at master log wm_binlog.000002, end_log_pos 1613; Error executing row event: 'Table 'dbwm.table01 ' doesn't exist', Error_code: 1146
从库当前配置:
replicate-do-db = dbwm
现象描述:
在主库执行语句,如果不使用use dbwm 直接执行sql;
create table dbwm.table01 (id int,name varchar(40));
insert into dbwm.table01 values (1,'111'),(2,'222'),(3,'333');
创建新表的语句不会在从库执行,进而导致从(slave)节点错误
解决:
从库:
replicate-do-db = dbwm 替换成 replicate_wild_do_table = dbwm.%
原因:
从库(slave)使用replicate_do_db和replicate_ignore_db两个参数时在主库操作需要使用use
db;然后再进行其他操作,不然从库(slave) 会报 例如: 'Table 'dbwm.table01 ' doesn't exist' 错误.
MySQL执行sql前检查的是当前默认数据库,所以跨库更新语句在Slave上会被忽略。