微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对mycat读写分离主从切换策略的调研

    当从库宕机后,读请求会全部转移到主库上,对业务无影响。

2、当主库宕机后

    目前,我们的writehost只设置了一个主库,当主库宕机后,通过mycat的 读写请求会全部报错,如下所示:

   读请求:

mysql> select * from t1;
ERROR  1184  (HY000): 拒绝连接

    写请求:

MysqL> insert into t1 values ( 2 );
ERROR  1184  (HY000): 拒绝连接

3、设置多个writehost,实现主库宕机后,写请求自动切换到从库

    上面看到,如果只设置一个writehost,主库宕机后,并不会自动切换,所有的 读写请求全部受影响。

    为了解决这个我们,我们可以设置多个writehost,当主库宕机后,自动把写请求切换到从节点。

    我们的生产环境是一主一从,我们可以把两个节点都设置为writehost,这样如果writehost1(主库)宕机后,mycat会自动请求全部转移到writehost2(从库)上。

    原来配置:

[root @demo -init conf]# cat  schema.xml
<?xml version= "1.0" ?>
<!DOCTYPE mycat:schema SYstem  " schema.dtd" >
<mycat:schema xmlns:mycat= " http://io.mycat/" >
     <schema name= "db1"  checksqlschema= "false"  sqlMaxLimit= "500"  datanode= "dn1" ></schema>
     <datanode name= "dn1"  dataHost= "localhost1"  database= "db1"  />
     <dataHost name= "localhost1"  maxCon= "1000"  minCon= "10"  balance= "3"  writeType= "0"  dbType= "MysqL"  dbDriver= "native"  switchType= "-1"  slaveThreshold= "100" >
         <heartbeat>select user()</heartbeat>
         <!-- can have multi write hosts -->
     <writeHost host= "hostM1"  url= " 192.168.174.30:3306"  user= "root"  password= "123456" >
     <readHost  host= "hostS1"  url= " 192.168.174.30:3307"  user= "root"  password= "123456"  />
     </writeHost>
     </dataHost>
</mycat:schema>

  修改后配置:

[root @demo -init conf]# cat  schema.xml
<?xml version= "1.0" ?>
<!DOCTYPE mycat:schema SYstem  " schema.dtd" >
<mycat:schema xmlns:mycat= " http://io.mycat/" >
     <schema name= "db1"  checksqlschema= "false"  sqlMaxLimit= "500"  datanode= "dn1" ></schema>
     <datanode name= "dn1"  dataHost= "localhost1"  database= "db1"  />
     <dataHost name= "localhost1"  maxCon= "1000"  minCon= "10"  balance= "3"  writeType= "0"  dbType= "MysqL"  dbDriver= "native"  switchType= "1"  slaveThreshold= "100" >
         <heartbeat>select user()</heartbeat>
         <!-- can have multi write hosts -->
     <writeHost host= "hostM1"  url= " 192.168.174.30:3306"  user= "root"  password= "123456" >
     <readHost  host= "hostS1"  url= " 192.168.174.30:3307"  user= "root"  password= "123456"  />
     </writeHost>
     <writeHost host= "hostM2"  url= " 192.168.174.30:3307"  user= "root"  password= "123456" />
     </dataHost>
</mycat:schema>

   就改了两处:

  a)把 switchType="-1"改成 switchType="1";

        说明: switchType:

<writeHost host= "allinmd-MysqL-3"  url= " 192.168.174.30:3307"  user= "root"  password= "123456" />

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐