• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!
使用pt-kill为MySQL保驾护航

使用pt-kill为MySQL保驾护航

运行平稳的数据库,如果遇到CPU狂飙,那很大可能就是慢SQL出现了。DBA首先要保证的是,数据库别跑挂了,所以我们要把那些运行慢的SQL杀死并记录到文件里,以便后面的排查。对于OLTP型业务,主库SELECT类SQL执行不允许超过1s才是合理的;那么对于超过1s的SQL或者对微延迟可以接受查询,理应在从库或者多源库上执行。 那么Percona Tools工……

MySQL查询优化:子查询物化

MySQL查询优化:子查询物化

一、背景 MySQL引入了Materialization(物化)这一关键特性用于子查询(比如在IN/NOT IN子查询以及 FROM 子查询)优化。 具体实现方式是:在SQL执行过程中,第一次需要子查询结果时执行子查询并将子查询的结果保存为临时表 ,后续对子查询结果集的访问将直接通过临时表获得。与此同时,优化器还具有延迟物化子查询的能力,先通过其它条件判断子……

GH-OST:配置使用实践

GH-OST:配置使用实践

一、背景 GitHub 正式宣布以开源的方式发布 gh-ost,GitHub 的 MySQL 无触发器在线更改表定义工具!下面是官方给出 gh-ost 产生的背景。 gh-ost 是 GitHub 在 2016 年 5 月份开源的,目的是解决一个经常碰到的问题:不断变化的产品需求会不断要求更改 MySQL 表结构,gh-ost 通过一种影响小、可控制、可审计……

GH-OST:输出信息说明​

GH-OST:输出信息说明​

了解GH-OST输出 GH-OST会尽量让你知道自己在做什么,会输出一些关键详细信息,让你了解整个迁移过程。当然,你可以控制输出级别。 --verbose:常用,有用的输出,而不是一切。 --debug:输出所有一切。 当开始执行GH-OST时,初始输出行可能如下所示: 2016-05-19 17:57:04 INFO star……

MySQL InnoDB RR隔离级别下INSERT…SELECT对SELECT表加锁模型和死锁案列

MySQL InnoDB RR隔离级别下INSERT…SELECT对SELECT表加锁模型和死锁案列

最近有网友遇到了在RR隔离级别下insert A select B where B.COL=** 由于select表也就是B表引发的死锁的问题。分析死锁日志后,笔者进行模拟重现了这位网友遇到了2种场景并且在本文中进行详细的描述。 本文使用版本Percona 5.7.14修改版,能够打印出事务所有的行锁信息结构链(不包含隐含锁) 本文中的测试是在RR隔离级……

GH-OST:原子切换原理

GH-OST:原子切换原理

Github 开源的 GH-OST 工具也已经有几年了,用过 GH-OST 工具的就会知道,其最后也需要有一个 cut-over 的动作,就是原表跟新表的切换。作者提供了一个原子可靠的切换方式,并且写了三篇文章来阐述 cut-over 操作过程,其中还对比了 Facebook OSC 切换算法。 1. Solving the Facebook-OSC no……

MySQL performance_schema系列文章

MySQL performance_schema系列文章

一、导语 很久之前,当我还在尝试着系统地学习performance_schema的时候,通过在网上各种搜索资料进行学习,但很遗憾,学习的效果并不是很明显,很多标称类似 “深入浅出performance_schema” 的文章,基本上都是那种动不动就贴源码的风格,然后深入了之后却出不来了。对系统学习performance_schema的……

MySQL 5.7定义日志级别新参数(log_error_verbosity)

MySQL 5.7定义日志级别新参数(log_error_verbosity)

log_warnings 在介绍这个参数前,我们先聊聊参数 log_warnings。我们知道 MySQL 中,其中 log_error 定义是否启用错误日志的功能和错误日志的存储位置,log_warnings 定义是否将告警信息(warning messages)也写入错误日志。此选项默认启用,具体来说: log_warnings 为 0, 表示不记录告……

MySQL表锁定(Table Locking)

MySQL表锁定(Table Locking)

MySQL允许客户端会话显式获取表锁,以防止其他会话在特定时间段内访问表。客户端会话只能为自己获取或释放表锁。它无法获取或释放其他会话的表锁。 在详细讨论之前,我们将创建一个名为示例的数据库sbtest,其中包含一个名为tbl实践表锁定语句的简单表。 CREATE DATABASE sbtest; CREATE TABLE t……

Amazon RDS多区域高可用测试

Amazon RDS多区域高可用测试

最近在AWS上面需要部署一组多区域RDS集群,AWS的多区域简单理解就是RDS一主一从分别在当地的两个机房(两个区域)。所以就有了下面各方面的测试。 我们需要测试什么? Primary挂掉时,Secondary是否会自动升级为Primary提供服务,切换期间中断多久? 发生切换后,数据是否有丢失? TPS&QPS分别是多少(配置不同得到的值会不同)……

MySQL备份恢复:Xtrabackup流传输实践

MySQL备份恢复:Xtrabackup流传输实践

XtraBackup支持流式备份,将备份以指定的tar或xbstream格式发送到STDOUT,而不是直接将文件复制到备份目录。要使用此功能,仅需要使用--stream选项即可,指定流格式为tar或xbstream,以及指定存储临时文件的绝对路径。 $ innobackupex --stream=tar /tmp ……

MySQL备份恢复:Xtrabackup全备strace调用栈信息

MySQL备份恢复:Xtrabackup全备strace调用栈信息

innobackupex全备strace调用栈信息解释,以下strace输出信息去掉了一些无用信息: 注意事项: 留意open系统调用等号后边的数字,这个数字是open打开一个文件时系统分配的FD号,如果一旦调用了close(FD)之后,系统会回收该FD分配给其他open的文件使用,请留下下文中的FD切换 innobackupex工具在备份过程中会创建几个……