Mycat2 icon indicating copy to clipboard operation
Mycat2 copied to clipboard

Mycat2.0是否支持1.6版本中一个逻辑库映射多个物理库

Open lisihan0607 opened this issue 3 years ago • 6 comments

2.0中如何配置一个逻辑库映射多个物理库,像1.6中使用/*!mycat:dataNode=xxx*/select * from t0; 指定访问某个节点数据

lisihan0607 avatar Apr 12 '22 06:04 lisihan0607

mycat2是通过每个逻辑表映射 数据源.物理库.物理表这个模型实现的

有一个类似的注释

/*+ MYCAT:TARGET(c0) */ select * from db1.travelrecord;

会直接把sql发到数据源或者集群,即使表没有配置,这个注释不会对sql补全逻辑表

junwen12221 avatar Apr 12 '22 07:04 junwen12221

一个新问题,我通过/*! mycat:createTable{...}*/创建一个分库分表后,想要修改表结构,比如新增一个字段 通过alter ...语句修改后发现逻辑表和物理表结构都已修改,但是select 新字段,提示字段不存在 通过/*! mycat:createTable{...}*/修改创建表语句并执行后,select可以查

lisihan0607 avatar Apr 13 '22 08:04 lisihan0607

经测试发现,alter后逻辑表和物理表机构都变了,但是select ... 不加where 分区字段,查出来内容还是之前的,加了where分区条件后就可以查变之后的了 而/! mycat:createTable{...}/(修改其中的创建表sql),逻辑表和物理表结构没变化,只是select ... 不加where 分区字段,查出的内容是修改后的,但加了where分区条件后查出的还是之前内容

lisihan0607 avatar Apr 13 '22 09:04 lisihan0607

自定义分片算法,自己修改配置的分片表,,以及不能通过sql分库分表语法(带dbpartition by mod_hash(id) tbpartition by mod_hash(id) tbpartitions 2 dbpartitions 2;)生成的分片表,暂时不支持alter的.你可以在mycat里alter,这样就可以把alter语句下发到mysql之后,重新执行/! mycat:createTable{...}/恢复自定义的分片表配置

junwen12221 avatar Apr 13 '22 12:04 junwen12221

通过/*! mycat:createTable{...}*/创建的分库表,执行drop table xxx,发现只删除了一个节点的表,要删除其他节点的表需要指定schema(drop table db2.xxx),全部执行一遍。有其他好的办法吗?

lisihan0607 avatar Apr 14 '22 06:04 lisihan0607

drop只删除原型库的 防止dba误操作,这个问题可能后面做一个注释来做删除操作.mycat的ddl功能只能用于开发时候,不能用于生产的,生产上操作表结构的操作叫dba用其他工具执行

junwen12221 avatar Apr 14 '22 07:04 junwen12221