MyCat基于MySQL实现主从切换

一、简介

主从切换:顾名思义,就是MySQL写节点出现宕机后,会自动切换到备用节点(也就是把从机也配置成writeHost),这样的话,第一个writeHost故障后,会自动切换到第二个,第二个故障后自动切换到第三个....以此类推;

如果当是1主3从模式,可以把第1个从节点配置为writeHost2,第2个和第3个从节点则配置为writeHost1的readHost;

一般情况下,都会结合读写分离一起实现,本文也是接着上一篇读写分离的文章的示例改造,如果没有查看的话可以先看【MyCat基于MySQL实现读写分离】https://blog.csdn.net/Weixiaohuai/article/details/101385597,以便继续今天的主从切换。

二、主从切换

要实现mysql主从切换,主要有以下几点:

【a】修改schema.xml,配置主从切换switchType=”2” 与心跳show slave status


        
 


        show slave status
        
        
        
                
                
        
        
        
        
 
  

MyCat基于MySQL实现主从切换_第1张图片 

  • 注意点:   
  • MyCAT心跳检查询句配置为 show slave status ,dataHost 上定义两个新属性: switchType=”2” 与slaveThreshold=”100”,此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制,Mycat心跳机制通过检测 show slave status 中的 “Seconds_Behind_Master”,”Slave_IO_Running”,”Slave_SQL_Running”三个字段来确定当前主从同步的状态及Seconds_Behind_Master主从复制时延,当Seconds_Behind_Master>slaveThreshold时,读写分离筛选器会过滤掉此Slave机器,防止读到很久以前的旧数据,当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时则表示主仅同步,可安全切换,否则不会切换。

【b】关闭主服务器192.168.8.130的mysql服务

service mysql stop

查看日志可见,主MySQL已经与从服务器失去了连接。

 

【c】登录mycat,执行如下查询:

select * from user;

查看mycat日志,看下查询请求被分发到哪一个节点上执行,

 

可见,查询请求被分发到M2节点上,即备用的writeHost。

【d】接着,我们执行插入操作

insert into user(id,name ) values(44444,database());

MyCat基于MySQL实现主从切换_第2张图片 

插入成功,然后我们查看 dnindex.properties,可见当前writeHost为第二个writeHost(备用写节点192.168.8.131),Mycat的dnindex属性文件中writeHost顺序是从0开始,即0代表第一个

cat dnindex.properties

 

三、注意点

  • (1) MySQL主从复制配置中,如果涉及到函数或存储过程的同步复制,需要在/etc/my.cnf中的[mysqld]段中增加配置log_bin_trust_function_creators=true 或在客户端中设置 set global log_bin_trust_function_creators = 1;
  • (2) 如果要做读写分离下的主从切换,那么从节点也有可能会变为写节点,因此从节点就不能设置为只读 read_only=1 ;

你可能感兴趣的:(MyCat)