一、配置
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启动暂停命令
[ops@pre-databases bin]$ ./mycat stop
Stopping Mycat-server...
Stopped Mycat-server.
[ops@pre-databases bin]$ ./mycat start
Starting Mycat-server...
[ops@pre-databases 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、设计表结构时,尽量冗余不会变更的字段。