07 2020 档案
摘要:最近遇到一个奇葩的需求,需要将mysql的主从复制模式由ABB修改为ABC,恰好这个mysql集群没有开启GTID,当时是在B上做了一次全量备份,然后使用该全量备份恢复C的方式进行的。做完之后在想有没有简单的方式实现,最终有了结果。 假设原主从复制拓扑为 A -- B1 -- B2,最终要求 B2作
阅读全文
摘要:mdl锁的主要作用是用来维护表元数据的一致性。在表上有活动事务的时候,不可以对表元数据进行修改操作。 如果没有MDL锁的保护,那么session2可以直接执行,并导致session1出错。 MDL锁是server层级的锁,每执行一条DDL DML语句事都会申请MDL锁,MDL加锁过程事系统自动控制,
阅读全文
摘要:《高性能 MySQL》描述:1. 通过两个隐藏列,一个保存行的创建时间,一个保存行的过期时间RR隔离级别:检索创建时间在当前事务版本号之前的数据,同时会检查数据的删除时间,保证新的删除操作不可见。select * from table where create_version <= ${versio
阅读全文
摘要:mysql中,使用explain可以模拟优化器执行sql语句,分析查询语句的性能瓶颈。 id:select查询的序号,表示的是查询中执行select子句的顺序。关注该字段获取sql语句各子句的执行顺序 1. id相同表示加载的顺序是从上到下 2. id值越大,优先级越高,越先被执行 select_t
阅读全文
摘要:在dba眼中,redis仅仅是一个缓存,不适合作为存储来使用,不管是redis-sentinel集群还是cluster集群,在redis主节点发生意外宕机时没有机制来保证主从节点数据的一致性。但是,很遗憾,业务方很喜欢将redis作为存储来使用,作为缓存使用的很少很少。 对于正常业务使用来说,red
阅读全文
摘要:当mysql开启binlog日志时,会存在一个内部XA的问题:事务在存储引擎层redo log的写入和binlog的写入一致性问题。 mysql通过两阶段提交很好的解决了redo log和binlog一致性问题: 第一阶段:innodb prepare, 持有prepare_commit_mutex
阅读全文
摘要:今天下午业务找我说是线上环境一个mysql库很慢,请求出现了大量的超时,让帮忙看看,以下为查找过程及甩锅过程。 1. mysql请求超时,ok,我们所有线上mysql都是开启了慢查询日志的,查找慢查询日志文件,没有发现所说的超时的查询。 2. 那就再看看有没有没有提交的事务,死锁等情况发生吧。 sh
阅读全文
摘要:A "defer" statement invokes a function whose execution is deferred to the moment the surrounding function returns, either because the surrounding func
阅读全文
摘要:线上一个redis集群中主节点使用的内存达到了9.78g,按照redis单个实例最大内存不要超出10g的规范,扩容操作就放在了今天晚上进行。因为之前redis迁槽都是采用 redis-trib.rb reshard xxx.xxx.xxx.xxx:8001 的方式进行,今晚准备采用 redis-tr
阅读全文