1. 程式人生 > >myca實戰之實踐

myca實戰之實踐

一、配置

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、設計表結構時,儘量冗餘不會變更的欄位。