复制类型
基于语句的复制statement
基于行的复制row
混合类型的复制mixed
mycat2发往后端的MYSQL的SQL总是带有库名的,在作为从的mysql在接收到binlog后,复制类型statement的binlog会根据use db;的状态(上下文),来进行选择同步执行库下的数据,所以如果执行库与sql中的库名不同,从库在接收到statement binlog的时候,不会apply该binlog.所以建议生产上使用row进行同步.
切换执行库的语句是
use mysql;
由于教程中的数据源的jdbc url中的执行库写了mysql,执行库其实就是use mysql中的mysql,在statement 同步下,那就是同步mysql下的数据,忽略其他库,即使sql中带有其他库名.也会影响到statement类型不能apply binlog.
所以jdbc url中的库名请写上业务库,该业务库要与物理分库对应
而mysql的配置中,以下设置会导致忽略对应的默认库,如果发现从库没有同步主库数据,请仔细检查
#主节点检查
binlog_do_db
binlog_ignore_db
#从节点检查
Replicate_Do_DB
Replicate_Ignore_DB
番茄
如果同步方式为statement方式,建议执行库配置与执行sql的涉及库一致,避免同步配置忽略执行库导致binlog不能apply
row模式下,忽略库,DDL也会不同步