大家看下,我下面的amoeba设置,我在rule.xml中的 tableRule 设置为:
name=”table01″ schema=”database01″ defaultPools=”amoeba,master”
然后:下面的规则我设置为:
rule1:
user_id<=100的
<defaultPools>amoeba</defaultPools>
<readPools>amoeba</readPools>
<writePools>amoeba</writePools>
rule2:
user_id>100的
<defaultPools>master</defaultPools>
<writePools>master</writePools>
<readPools>master</readPools>
然后我在另外一台PC机上登陆amoeba-for-mysql,然后发送这样的SQL语句:
insert into database01.table01(lWindField) values(99);
按理,应该是table01和database01 命中规则tableRule,进入rule判断,
99 <100,所以命中rule1,这样的话,应该只路由到amoeba数据库,但是我发现amoeba-for-mysql路由到了 amoeba和master数据库!
我发送insert into database01.table01(lWindField) values(222);
也是一样,这是为什么??
不是不命中rule1、rule2……中的一条,才会插入到defaultPools=”amoeba,master” 么?
<?xml version=”1.0″ encoding=”gbk”?>
<!DOCTYPE amoeba:rule SYSTEM “rule.dtd”>
<amoeba:rule xmlns:amoeba=”http://amoeba.meidusa.com/”>
<tableRule name=”table01″ schema=”database01″ defaultPools=”amoeba,master”>
<rule name=”rule1″>
<parameters>lWindFiledId</parameters>
<expression><![CDATA[ user_id<=100]]></expression>
<defaultPools>amoeba</defaultPools>
<readPools>amoeba</readPools>
<writePools>amoeba</writePools>
</rule>
<rule name=”rule2″>
<parameters>lWindFiledId</parameters>
<expression><![CDATA[user_id>100 ]]></expression>
<defaultPools>master</defaultPools>
<writePools>master</writePools>
<readPools>master</readPools>
</rule>
</tableRule>