MySQL之死锁细说

有些研发同学对MySQL的死锁不是很清楚,常常把一些事务超时等现象归咎于可能存在死锁,带着这种误解排查问题,往往会徒劳无功,离真相越来越远。 记得有一位WP同事问:“经常遇到mysql死锁,这个怎么解决啊?” 我说:”你怎么知道是死锁?“ WP: “我就执行了一个update, 他就卡住在那里好半

高可用的悲剧

互联网企业,特别是大型互联网企业,纷纷以服务的高可用而著称。如果一家有点名气的企业网站挂了半个小时,该消息瞬间就会在各论坛、微博等社交媒体传播。当然关注这些信息的人也都是一些互联网从业者。这是件大事,能够亲身经历会无比荣幸,因此虽然这家公司的网站挂了,但域名访问量会飙升。大家都想亲临这无比荣幸的时刻

阻止proxysql写组(writer group)中有多个server

现状 大家都知道,proxysql根据mysql中的read_only属性来判断server是否允许写入,即: 1. 当read_only=0|OFF时,说明server允许写入,把它放到writer group中; 2. 当read_only=1|ON时,说明server是只读,确保它在re

MySQL中的MVCC协议

MVCC是一种并发控制协议,我们经常会听到协议两个字,比如Tcp协议,HTTP协议,raft协议等等。感觉协议高深莫测,只有那些高手怪才才能理解。其实我对协议的理解很简单,协议就是为完成某项作业而指定的一系列约定!比如古时候士兵放哨,遇见敌情通过点火放烟的方式来传递信息,这就是简单的协议。只不过互联

一条delete语句导致slave hang住一天

生产环境一条简单的delete语句,导致slave hang住,复制延迟不断增加! 这个问题很怪,整个系统CPU,内存,磁盘IO都没有超载,就是一个SQL线程运行,超级慢! 查看事务状态复制SQL线程一直处于fetching rows. 1 2 3 4 5 6 7 8 9 10 11 12 13

ProxySQL源码之SQL执行时间的计算

ProxySQL中使用了MariaDB的Client API.对后端mysql的请求都是异步的(KILL QUERY/CONNECTION 命令除外,因为这个操作ProxySQL是启动了一个线程来执行的,没有必要再使用异步了),也就是说一个SQL发送给后端mysql,ProxySQL的session

ProxySQL源码之query digest text的生成

我们知道ProxySQL对每条SQL的执行都有统计功能,其统计信息位于stats库表stats_mysql_query_digest中。针对每条SQL,ProxySQL会计算其digest, 以及digest_text,并在该表记录它的执行信息,如最大执行时间,最小执行执行时间,执行频次等。但这些功

ProxySQL 白名单与黑名单

ProxySQL支持白名单(white list)和黑名单(black list), 其支持方式还是通过路由规则来实现的。它强悍的路由功能似乎无所不能啊!但这种方式并不能阻止用户连接,只是阻止任何的查询! 黑名单 对黑名单的支持很简单,比如我们想禁止某个IP访问只需在mysql_query_rul

ProxySQL的链式路由

ProxySQL 支持链式路由规则,具体来说是,匹配完一条规则后,再接着匹配指定的其它规则。链式路由指定方式是通过mysql_query_rules表中的两个字段来实现的:flagOUT, flagIN,官方的解释很绕,看了几遍,模模糊糊不能明了,也许是语言方面的障碍吧: lagIN, flagO

Categories

Tags

Links

bohr