myca實戰之實踐
阿新 • • 發佈:2018-12-06
一、配置
mycat配置檔案目錄:mycat/conf
最主要的配置檔案:server.xml、schema.xml、rule.xml
1、server.xml
配置跟例項資料庫的連線資訊,資料庫使用者名稱、密碼、資料庫名稱,如下:
<user name="root" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">supply</property> </user> <user name="dbloginname"> <property name="password">123456</property> <property name="schemas">supply,operations,unionauth,crm,message,product,orders,pay,es</property> <!--<property name="readOnly">true</property>--> </user>
2、schema.xml
配置分片節點(dataNode)資訊,配置示例如下:
<dataNode name="dn1_supply" dataHost="localhost1" database="supply" />
<dataNode name="dn2_supply" dataHost="localhost2" database="supply" />
<schema name="supply" checkSQLschema="false" sqlMaxLimit="10000000" dataNode="dn1_supply"> <table name="yf_brand" primaryKey="id" type="global" dataNode="dn1_supply" /> <table name="yf_product_sku" rule="sharding-by-murmur-supplier-id" dataNode="dn1_product,dn2_product" /> </schema>
3、rule.xml
配置分片規則(rule),具體規則可參看上一篇《mycat實戰之理論》,配置示例如下
<tableRule name="rule2">
<rule>
<columns>user_id</columns>
<algorithm>func1</algorithm>
</rule>
</tableRule>
algorithm(演算法)節點是配置分片的規則演算法。
二、啟動關閉
mycat啟動暫停命令
[[email protected] bin]$ ./mycat stop
Stopping Mycat-server...
Stopped Mycat-server.
[[email protected] bin]$ ./mycat start
Starting Mycat-server...
[[email protected] bin]$ ./mycat status
Mycat-server is running (3803).
四、實際開發注意點
1、對於分片的表,sum、count函式支援存在缺陷,例如表分了兩片的話,sum,count出來會出現兩條記錄。改進方式是對sum、count出來的結果集再次sum、count。
2、唯一約束,因為分片了,資料庫的唯一約束只在單個表中支援,分片之後如果需要對所有分片進行唯一約束的話,需要藉助其他元件。如redis儲存唯一約束值,在插入資料庫時先校驗redis是否存在該key。
3、對兩個結果集進行join操作時,需要區別兩個關聯的結果集在同一個分片。否則join出來的結果集會出現資料錯誤。
4、設計表結構時,儘量冗餘不會變更的欄位。