一 简介:上一章我们讲了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官方文档