随笔分类 -  MySQL

摘要:【问题现象】 开发同事反馈有应用在21:00-22:00之间出现大量超时报错。 【问题分析】 1、 从DB服务器慢查询指标来看,18:00后有大量的慢查询,累计产生了约9000条慢查询 2、 测试直接执行慢查询SQL语句,并没有发现性能问题 3、当时DBA同事在排障现场看到了线程执行时等待Writi 阅读全文
posted @ 2019-03-15 18:20 wangdong 阅读(3472) 评论(0) 推荐(0)
摘要:为评估MySQL从5.6.21升级到5.7.23版本的性能,针对分区表的读写做了对比测试。 【测试环境】 1、 两台HP380的物理机,配置一致,CPU:Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz,内存:128G,磁盘:2*300G,10K(1) 8*900G 阅读全文
posted @ 2019-03-14 18:14 wangdong 阅读(2751) 评论(0) 推荐(0)
摘要:最近有一台CentOS 6.4的服务器发生多次crash,kernel version 是Linux 2.6.32-431.29.2.el6.x86_64。从vmcore-dmesg日志内容及crash工具解析vmcore文件来看,与已知bug比较匹配。 【分析过程】 1、查看vmcore-dmes 阅读全文
posted @ 2019-01-09 18:15 wangdong 阅读(1895) 评论(0) 推荐(0)
摘要:【perf工具导致系统hang住的原因是触发了低版本kernel的bug】 今天在测试服务器做压测,运行perf record做性能分析时,系统再次hang住了,这次在系统日志中记录了一些有用的信息,如下 Dec 25 14:37:05 kernel: BUG: soft lockup - CPU# 阅读全文
posted @ 2018-12-25 15:49 wangdong 阅读(1311) 评论(0) 推荐(0)
摘要:【背景】 有同事在研究mongo的服务启动方式,讨论到mysql5.7的服务管理时一起做了下面测试。 MySQL5.7是用systemd来管理service的,它的配置文件/usr/lib/systemd/system/mysqld@.service中,只定义了ExecStart启动服务器的命令, 阅读全文
posted @ 2018-12-17 17:35 wangdong 阅读(642) 评论(0) 推荐(0)
摘要:【问题】 生产环境有多台slave服务器,不定期的会crash,下面是error log中的堆栈信息 Thread pointer: 0x7f1e54b26410 Attempting backtrace. You can use the following information to find 阅读全文
posted @ 2018-12-06 18:26 wangdong 阅读(2283) 评论(0) 推荐(1)
摘要:【问题】 最近查看MySQL的error log文件时,发现有很多服务器的文件中有大量的如下日志,内容很长(大小在200K左右),从记录的内容看,并没有明显的异常信息。 有一台测试服务器也有类似的问题,为什么会记录这些信息,是谁记录的这些信息,分析的过程比较周折。 Status informatio 阅读全文
posted @ 2018-11-29 15:08 wangdong 阅读(563) 评论(0) 推荐(0)
摘要:【可能的原因】 MySQL无法连接的原因有很多,比如: 1、数据库的请求量突增,实例连接数超过max_connections,或用户连接数超过max_user_connections, 这种情况连接时客户端一般会抛出对应的错误信息 如果max_connections打满,无法连到MySQL,可以尝试 阅读全文
posted @ 2018-11-26 13:40 wangdong 阅读(5945) 评论(0) 推荐(0)
摘要:【问题二】 有一个集群(MySQL5.7.23)切换后复制slave报1236,其实是不小心在slave上执行了事务导致 Got fatal error 1236 from master when reading data from binary log: 'The slave is connect 阅读全文
posted @ 2018-11-23 16:30 wangdong 阅读(574) 评论(0) 推荐(0)
摘要:【现象】 最近有台服务器晚上CPU告警,系统抓取的故障期间的snapshot显示CPU %sys较高,同时context switch在300K以上。 是否过高的context switch引起的%sys消耗呢,做了下面的测试,来验证context switch与CPU %sys之间有没有直接的关系 阅读全文
posted @ 2018-11-22 16:52 wangdong 阅读(1236) 评论(0) 推荐(0)
摘要:【工具】 SystemTap是Linux下的动态跟踪工具,可以方便的监控、跟踪运行中的程序或Linux内核操作,我们通过写SystemTap脚本(与C语言类似),编译为内核模块,然后加载到内核中运行,它带来的性能损耗比较小。 【两个应用举例】 一、 分析SQL语句在执行各个阶段的消耗 比如我们想统计 阅读全文
posted @ 2018-11-21 15:52 wangdong 阅读(1351) 评论(0) 推荐(0)
摘要:【问题】 我们有台HP的服务器,SSD在写IOPS约5000时,%util达到80%以上,那么这块SSD的性能究竟有没有问题,为解决这个问题做了下面测试。 【工具】 blktrace是linux下用来排查IO性能的工具。它可以记录IO经历的各个步骤,并计算出IO请求在各个阶段的消耗,下面是关键的一些 阅读全文
posted @ 2018-11-16 18:26 wangdong 阅读(2864) 评论(1) 推荐(0)
摘要:【问题一】 复制slave报错1236,是较为常见的一种报错 Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MAS 阅读全文
posted @ 2018-11-13 13:10 wangdong 阅读(2752) 评论(0) 推荐(0)
摘要:背景】 MySQL出现短暂的3-30秒的性能问题,一般的监控工具较难抓到现场,很难准确定位问题原因。 对于这类需求,我们日常的MySQL分析工具都有些不足的地方: 1、 性能监控工具,目前粒度是分钟级,无法反应秒级的性能波动; 2、 MySQL Performance_schema工具采集是3秒落地 阅读全文
posted @ 2018-11-07 17:46 wangdong 阅读(2152) 评论(1) 推荐(0)
摘要:【背景】 之前我们碰到一些MySQL的性能问题,比如服务器日志备份时可能会导致慢查询增多,一句简单的select或insert语句可能执行几秒,IO负载较高的服务器更容易出现并发线程数升高,CPU上升等问题。 最近学习了MySQL InnoDB IO相关的部分内核原理,可以帮我们了解服务器IO瓶颈对 阅读全文
posted @ 2018-11-06 09:50 wangdong 阅读(6266) 评论(1) 推荐(1)
摘要:【问题】 有同事反馈我们改造过的MySQL5.7.23版本,使用pt-table-checksum工具比较主从数据库的一致性时报错 Unsafe statement written to the binary log using statement format since BINLOG_FORMA 阅读全文
posted @ 2018-11-02 11:09 wangdong 阅读(1190) 评论(0) 推荐(0)
摘要:【问题】 假设有这种场景,误操作DROP DB或TABLE,常规的恢复操作是还原全备份,并用mysqlbinlog追加到drop操作前的位置。 如果需要恢复的binlog的日志量比较大而我们只希望恢复某个DB或某张表,常规操作会花费较长的时间。 在网上看到了借助SQL Thread来应用binlog 阅读全文
posted @ 2018-10-25 18:33 wangdong 阅读(1008) 评论(1) 推荐(0)
摘要:【问题】 有一台MySQL5.6.21的服务器发生OOM,分析下来与多种因素有关 【分析过程】 1、服务器物理内存相对热点数据文件偏小,62G物理内存+8G的SWAP,数据文件大小约550G 触发OOM是binlog备份的cp进程 2、mysqld实际使用物理内存远大于innodb_buffer_p 阅读全文
posted @ 2018-10-25 16:36 wangdong 阅读(1707) 评论(0) 推荐(0)
摘要:【SWAP产生原理】 先从swap产生的原理来分析,由于linux内存管理比较复杂,下面以问答的方式列了一些重要的点,方便大家理解: 1、swap是如何产生的 swap指的是一个交换分区或文件,主要是在内存使用存在压力时,触发内存回收,这时可能会将部分内存的数据交换到swap空间。 2、内存回收的机 阅读全文
posted @ 2018-10-23 13:27 wangdong 阅读(2571) 评论(0) 推荐(0)
摘要:CentOS 7默认安装MySQL5.7.23,服务管理发生了变化,从sysvinit(service mysql start)变化为systemd(systemctl start mysqld.service) 最近测试了下MySQL5.7.23的服务管理参数,测试主要涉及Restart ,Res 阅读全文
posted @ 2018-10-22 10:11 wangdong 阅读(764) 评论(0) 推荐(0)