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官方文档
cetus系列~ 读写分离具体分析的更多相关文章
- 161220、使用Spring AOP实现MySQL数据库读写分离案例分析
一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案,更是最大限度了提高了应用中读取 (Read)数据的速度和并发量. 在进行数据库读写分离的时候,我们首先要进行数据库 ...
- 170301、使用Spring AOP实现MySQL数据库读写分离案例分析
使用Spring AOP实现MySQL数据库读写分离案例分析 原创 2016-12-29 徐刘根 Java后端技术 一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案 ...
- 使用Spring AOP实现MySQL数据库读写分离案例分析
一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案,更是最大限度了提高了应用中读取 (Read)数据的速度和并发量. 在进行数据库读写分离的时候,我们首先要进行数据库 ...
- proxysql 系列 ~ 读写分离核心功能
一 相关表介绍 1 mysql_user 列表配置 1 username && password 账号密码 2 default_hostgroup 默认的组ID2 mysq ...
- cetus系列~ 继续分析
一 简介:我们来继续探讨cetus的细节问题 二 命令 1 select help 查看帮助 2 select * from backends 查看后端列表 3 select conn_detai ...
- 030:Cetus中间件和MHA读写分离
030:Cetus中间件和MHA读写分离 line:V1.1 mail: gczheng@139.com date: 2018-08-30 一.主机环境 虚拟机配置 CPU 内存 硬盘 OS版本 My ...
- EF多租户实例:演变为读写分离
前言 我又来写关于多租户的内容了,这个系列真够漫长的. 如无意外这篇随笔是最后一篇了.内容是讲关于如何利用我们的多租户库简单实现读写分离. 分析 对于读写分离,其实有很多种实现方式,但是总体可以分以下 ...
- 从零开始学 Java - Spring AOP 实现主从读写分离
深刻讨论为什么要读写分离? 为了服务器承载更多的用户?提升了网站的响应速度?分摊数据库服务器的压力?就是为了双机热备又不想浪费备份服务器?上面这些回答,我认为都不是错误的,但也都不是完全正确的.「读写 ...
- 使用Spring AOP实现MySql的读写分离
转自:http://blog.csdn.net/xlgen157387/article/details/53930382 一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解 ...
随机推荐
- Luogu5055 【模板】可持久化文艺平衡树(fhq-treap)
注意下传标记时也需要新建节点.空间开的尽量大. #include<iostream> #include<cstdio> #include<cmath> #inclu ...
- POJ3252-RoundNumbers-排列组合
当一个数的二进制表示中,0的个数大于或等于1的个数时,叫做RoundNumber.求从S到F两个数(包含)之间的RoundNumber个数. 这类题一般都是先求出0到N的个数,然后两个相减. 由于题目 ...
- Codeforces Round #419 (Div. 2) B. Karen and Coffee
To stay woke and attentive during classes, Karen needs some coffee! Karen, a coffee aficionado, want ...
- Java8 使用
Java8 使用 链接:https://www.jianshu.com/p/936d97ba0362 链接:https://www.jianshu.com/p/41de7b5ac7b9 本文主要总结了 ...
- 【BZOJ4813】[CQOI2017]小Q的棋盘(贪心)
[BZOJ4813][CQOI2017]小Q的棋盘(贪心) 题面 BZOJ 洛谷 题解 果然是老年选手了,这种题都不会做了.... 先想想一个点如果被访问过只有两种情况,第一种是进入了这个点所在的子树 ...
- Shell基础知识(二)
对于一个shell脚本来说,第一行是 "#!/bin/bash",这条命令中的 "#!" 告诉系统该用哪一款解释器来对该脚本进行解释,后面的"/bin ...
- CAN通信详解
30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议. ...
- android 之 Hnadler 、Message 、Looper
Handler定义: 主要接受子线程发送来的数据,并用此数据配合主线程更新UI. 为什么要用Handler? 我们手机当中的很多功能或操作是不能都放在Activity当中的,比如下载文件.处理大量数据 ...
- 关于next.js中的css
css进行了全局和局部的限制 export default () => ( <div className='hello'> <p>Hello World</p> ...
- Solr7.1---简单搜索
本文环境基于上一节. and搜索 两种用法: apple AND banana +apple +banana [+是一元操作符,要求求后面的查询部分必需在文档中出现.AND是二元操作符,要求其左右两端 ...