Mycat可以在实际库主从机的基础上设置主机负责写,从机负责读,及读写的具体策略、主从切换的策略。
对外暴露一个逻辑库,读和写会转发到不同的实际库。
<dataHost name="host122" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.44.122:3306" user="root" password="123456">
<readHost host="hostS1" url="192.168.44.129:3306" user="root" password="123456" />
</writeHost>
</dataHost>
balance:负载的配置,决定 select 语句的负载值作用0不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。1所有读操作都随机发送到当前的 writeHost 对应的 readHost 和备用的 writeHost2所有的读操作都随机发送到所有的 writeHost,readHost 上3所有的读操作都只发送到 writeHost 的 readHost 上
writeType:读写分离的配置,决定 update、delete、insert 语句的负载值作用0所有写操作都发送到可用的 writeHost 上(默认第一个,第一个挂了以后发到第二个)1所有写操作都随机的发送到 writeHost
switchType:主从切换配置值作用-1表示不自动切换1默认值,表示自动切换2基于 MySQL 主从同步的状态决定是否切换 , 心跳语句为 show slave status3基于 MySQL galera cluster 的切换机制(适合集群)( 1.4.1 ),心跳语句为 show status like 'wsrep%' 。