Mycat双主异常后自动切换

mycat通过dataHost标签的writeType和switchType来定义故障切换方式。
writeType=0,表示所有写都发送到配置的第一个writeHost上,第一个挂了切换到第二个writeHost上,重启后以切换后的为准,切换记录在conf/dnindex.properties
writeType=1,表示所有写都随机发送到配置的writeHost上,mycat1.5以上已废弃不推荐。
switchType=-1,表示不自动切换
switchType=1,默认值,表示自动切换
switchType=2,基于MySQL主从同步的状态决定是否切换,心跳语句为show slave status。
switchType=3,基于galaru cluster的切换机制(合适集群),mycat1.4以上支持,心跳语句为show status like ‘wsrep%’。

server.xml配置如下

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
  writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="5">
  <heartbeat>show slave status</heartbeat>
  <!-- can have multi write hosts -->
  <writeHost host="hostM1" url="localhost:3306" user="root" password="root">
    <!-- can have multi read hosts -->
    <readHost host="hostS1" url="localhost:3307" user="root" password="root" />
  </writeHost>
  <writeHost host="hostM2" url="localhost:3308" user="root" password="root"></writeHost>
 </dataHost>

stop第一台写入数据库hostM1后,根据switchType=1会自动切换到hostM2上,当hostM1重启恢复之后,mycat并没有切换回第一个hostM1写入节点,而是需要重新配置主从状态。或者你把hostM2再关闭下,它就会自动切换回hostM1了。根据实际情况使用切换属性。

此条目发表在服务器分类目录,贴了, 标签。将固定链接加入收藏夹。

发表回复