需求說明:
需要將ecshop和zabbix兩個數據庫,都通過mycat顯示出來,並且都有讀寫權限
1、修改server.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="defaultSqlParser">druidparser</property>
</system>
<!--以下設置爲應用訪問帳號權限 -->
<user name="root">
<property name="password">123456</property>
<!-- 下面標籤填寫的內容需要和schema.xml配置文件內的一致這裏的兩個值,可用逗號分開,但是在schema.xml配置文件內,必須用兩個schema標籤來進行分開填寫 -->
<property name="schemas">ecshop,zabbix</property>
</user>
</mycat:server>
2、修改schema.xml文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<!--這裏的schema標籤內的name名字需要和server.xml內的一致-->
<schema name="ecshop" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<schema name="zabbix" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2">
</schema>
<!--這裏寫兩個dataNode,對應上述兩個schema標籤,database的值表示數據庫的真實名稱 -->
<dataNode name="dn1" dataHost="dthost" database="ecshop"/>
<dataNode name="dn2" dataHost="dthost" database="zabbix"/>
<dataHost name="dthost" maxCon="500" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user();</heartbeat>
<writeHost host="MGR-130-1" url="192.168.1.130:3306" user="mycat" password="123456">
<readHost host="MGR-140-2" url="192.168.1.140:3306" user="mycat" password="123456">
</readHost>
</writeHost>
</dataHost>
</mycat:schema>
實驗錯誤總結:
1、之前參照網上很多資料,這裏如果寫多庫顯示的,直接寫一個schema標籤,在標籤內的dataNode值內寫兩個,用逗號分開,
按照這種方式,配置完畢後,重啓mycat報錯,提示無法找到dataNode標籤內值。
2、這種配置方式不是分庫分表,只是單獨的實現mycat中間件連接數據庫顯示的數據庫
3、如果要實現真正意義上的分庫分表,請參考如下連接:
https://www.cnblogs.com/kevingrace/p/9365840.html
https://www.cnblogs.com/joylee/p/7513038.html