cetus系列~ 读写分离具体分析

一 简介:上一章我们讲了cetus的基本安装,这章继续分析cetus

二 分析

  1 基本配置
       1 开启主从延迟检测需在后端数据库创建库proxy_heart_beat和表tb_heartbeat:
        CREATE DATABASE proxy_heart_beat;
        USE proxy_heart_beat;
        CREATE TABLE tb_heartbeat ( p_id varchar(128) NOT NULL, p_ts timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (p_id) ) ENGINE = InnoDB DEFAULT CHARSET = utf8;
      2 添加新从库
        add master/slave '<ip:port>' 添加节点 //会自动添加到配置文件中
     3 从库维护
       设置stateus状态 为 maintaining状态或是deleted状态
       update backends set status=maintaining where address='ip:port' //设置维护
       delete from backends where address='ip:port'; //删除
       update backends set state='up',type='' where address='ip:port'; 重新添加

   4 状态说明
       select * from backends参数说明
       status
       unknown: 后端初始状态,还未建立连接;
       up: 能与后端正常建立连接;
       down: 与后端无法联通(如果开启后端状态检测,能连通后自动变为UP);
       maintaining: 后端正在维护,无法建立连接或自动切换状态(此状态由管理员手动设置);
       deleted: 后端已被删除,无法再建立连接。
      注意:update后端的state只包括up|down|maintaining三种状态,delete/remove后端可将后端的state设为deleted状态。
     slave delay 延时毫秒数 主库的值为NULL
  5 相关参数
   check_slave_delay //是否需要检测延时 默认为检测
   slave-delay-down //延时超过多少就标记为down
   slave-delay-recover//延时恢复多少就恢复
   slave-delay-recover必须比slave-delay-down小,若用户配置的slave-delay-recover比slave-delay-down大则默认设置slave-delay-recover与slave-delay-down相等

   注意 :cetus只会对延迟进行检测,不会对复制进程的健康进行检测,这里要特别注意
  6 测试
   1 手动停止1 个slave
   2 手动停止2 个slave
   3 手动造成延迟
  执行的sql
  select * from t1 for update
  select sleep(15) from t1 where a=1; 执行2次
  insert into t1 select 2 ,sleep(15)
  select/*#mode=READWRITE*/ sleep(15) from a;
  alter table a add index aa(cc)
 观测结果
  根据show connectionlist观察Server查看IP指派即可
  读写分离总结(影响查询的几个方面)
 1 事务中的查询
 2 select...for update 或 select ... lock in share mode
 3 Cetus设置参数master-preferred=true所有流量默认全部路由主库
 4 Cetus设置参数read-master-percentage控制主从读流量负载
 5 使用注释/*#mode=READWRITE*/或/*#mode=READONLY*/
 6 对于DBA操作建议直接连主库,包括DML和DDL操作
 处理
1 默认情况下,读流量会优先路由到从库,从库之间按照轮询策略在各个从库之间做负载均衡;一旦所有从库均不可用,会路由到主库上
2 如果使用注释/*#mode=READWRITE*/,读流量会路由到主库
3 如果设置read-master-percentage=100,所有的查询流量均路由到主库;如果设置read-master-percentage=[0, 100),Cetus会将读流量按照该比例路由到主库和从库。注意,这里的从库指的是全部的从库,即该比例指的是主库和全部从库的比例。
参数优先级
注释的优先级最高,其次是参数master-preferred,最后是参数read-master-percentage。

三 总结

本文的资料大多来源于cetus官方文档,详情请见cetus官方文档

转载于:https://www.cnblogs.com/danhuangpai/p/9843960.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值