自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

转载 MySQL5.6 大量SQL语句处于Writing to net状态的案例分析

【问题现象】开发同事反馈有应用在21:00-22:00之间出现大量超时报错。【问题分析】1、 从DB服务器慢查询指标来看,18:00后有大量的慢查询,累计产生了约9000条慢查询2、 测试直接执行慢查询SQL语句,并没有发现性能问题3、当时DBA同事在排障现场看到了线程执行时等待Writing to net。之前我们碰到过大量Writing...

2019-03-15 18:20:00 643

转载 MySQL5.7.23 VS MySQL5.6.21 分区表性能对比测试

为评估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,10K(10)2、测试实例还原了生产集群的实例,测试分区表记录数约3800万...

2019-03-14 18:14:00 300

转载 CentOS 6.4在运行XFS时系统crash的bug分析

最近有一台CentOS 6.4的服务器发生多次crash,kernel version 是Linux 2.6.32-431.29.2.el6.x86_64。从vmcore-dmesg日志内容及crash工具解析vmcore文件来看,与已知bug比较匹配。【分析过程】1、查看vmcore-dmesg日志<3>CIFS VFS: Error -11 sending ...

2019-01-09 18:15:00 1125

转载 CentOS 7.1系统自动重启的Bug定位过程

【问题】有同事反应最近有多台MongoDB的服务器CentOS 7.1系统会自动重启,分析了下问题原因。【排查过程】1、 检查系统日志/var/log/message,并没有记录异常信息,journalctl相关日志只记录发生过重启2、 系统默认配置了kdump,使用crash工具分析/var/crash下的转储文件vmcore,命令如下:crash /usr/...

2018-12-27 22:42:00 3100

转载 使用perf工具导致系统hang死的原因

【perf工具导致系统hang住的原因是触发了低版本kernel的bug】今天在测试服务器做压测,运行perf record做性能分析时,系统再次hang住了,这次在系统日志中记录了一些有用的信息,如下Dec 25 14:37:05 kernel: BUG: soft lockup - CPU#1 stuck for 67s!通过在网上搜索,确认这是linux ker...

2018-12-25 15:49:00 900

转载 CentOS 7下systemd是如何stop mysql服务的

【背景】有同事在研究mongo的服务启动方式,讨论到mysql5.7的服务管理时一起做了下面测试。MySQL5.7是用systemd来管理service的,它的配置文件/usr/lib/systemd/system/mysqld@.service中,只定义了ExecStart启动服务器的命令,但没有定义ExecStop参数,就是停止mysqld服务时执行的命令。systemd...

2018-12-17 17:35:00 334

转载 MySQL数据库crash的问题分析

【问题】生产环境有多台slave服务器,不定期的会crash,下面是error log中的堆栈信息Thread pointer: 0x7f1e54b26410Attempting backtrace. You can use the following information to find outwhere mysqld died. If you see no mes...

2018-12-06 18:26:00 625

转载 谁记录了mysql error log中的超长信息(记pt-stalk一个bug的定位过程)

【问题】最近查看MySQL的error log文件时,发现有很多服务器的文件中有大量的如下日志,内容很长(大小在200K左右),从记录的内容看,并没有明显的异常信息。有一台测试服务器也有类似的问题,为什么会记录这些信息,是谁记录的这些信息,分析的过程比较周折。Status information:Current dir:Running threads: 2452 S...

2018-11-29 15:08:00 200

转载 谈谈MySQL无法连接的原因和分析方法

【可能的原因】MySQL无法连接的原因有很多,比如:1、数据库的请求量突增,实例连接数超过max_connections,或用户连接数超过max_user_connections,这种情况连接时客户端一般会抛出对应的错误信息如果max_connections打满,无法连到MySQL,可以尝试用gdb来修改参数sudo gdb -p $(cat /var/run/mys...

2018-11-26 13:40:00 567

转载 MySQL 5.7基于GTID复制的常见问题和修复步骤(二)

【问题二】有一个集群(MySQL5.7.23)切换后复制slave报1236,其实是不小心在slave上执行了事务导致Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_P...

2018-11-23 16:30:00 262

转载 MySQL CPU %sys 高的案例分析(三)

【现象】最近有台服务器晚上CPU告警,系统抓取的故障期间的snapshot显示CPU %sys较高,同时context switch在300K以上。是否过高的context switch引起的%sys消耗呢,做了下面的测试,来验证context switch与CPU %sys之间有没有直接的关系。【测试】用mysqlslap并发100个线程执行select 1语句,可...

2018-11-22 16:52:00 218

转载 使用systemtap调试工具分析MySQL的性能

【工具】SystemTap是Linux下的动态跟踪工具,可以方便的监控、跟踪运行中的程序或Linux内核操作,我们通过写SystemTap脚本(与C语言类似),编译为内核模块,然后加载到内核中运行,它带来的性能损耗比较小。【两个应用举例】一、 分析SQL语句在执行各个阶段的消耗比如我们想统计一句SQL在解析阶段的执行时间,可以在mysqld进程的对应parse_s...

2018-11-21 15:52:00 205

转载 MySQL服务器SSD性能问题分析与测试

【问题】我们有台HP的服务器,SSD在写IOPS约5000时,%util达到80%以上,那么这块SSD的性能究竟有没有问题,为解决这个问题做了下面测试。【工具】blktrace是linux下用来排查IO性能的工具。它可以记录IO经历的各个步骤,并计算出IO请求在各个阶段的消耗,下面是关键的一些步骤:Q2G – 生成IO请求所消耗的时间,包括remap和split的时间...

2018-11-16 18:26:00 234

转载 MySQL 5.7基于GTID复制的常见问题和修复步骤(一)

【问题一】复制slave报错1236,是较为常见的一种报错Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has p...

2018-11-13 13:10:00 284

转载 用pt-stalk定位MySQL短暂的性能问题

背景】MySQL出现短暂的3-30秒的性能问题,一般的监控工具较难抓到现场,很难准确定位问题原因。对于这类需求,我们日常的MySQL分析工具都有些不足的地方:1、 性能监控工具,目前粒度是分钟级,无法反应秒级的性能波动;2、 MySQL Performance_schema工具采集是3秒落地10000行记录,对于QPS大于3000以上的服务器采集会丢失数据;Perfo...

2018-11-07 17:46:00 126

转载 服务器IO瓶颈对MySQL性能的影响

【背景】之前我们碰到一些MySQL的性能问题,比如服务器日志备份时可能会导致慢查询增多,一句简单的select或insert语句可能执行几秒,IO负载较高的服务器更容易出现并发线程数升高,CPU上升等问题。最近学习了MySQL InnoDB IO相关的部分内核原理,可以帮我们了解服务器IO瓶颈对MySQL性能的影响,下面以MySQL5.7.23的源码为例【原理】1、Inn...

2018-11-06 09:50:00 190

转载 MySQL主从检验一致性工具pt-table-checksum报错的案例分析

【问题】有同事反馈我们改造过的MySQL5.7.23版本,使用pt-table-checksum工具比较主从数据库的一致性时报错Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsaf...

2018-11-02 11:09:00 202

转载 MySQL DROP DB或TABLE场景下借助SQL Thread快速应用binlog恢复方案

【问题】假设有这种场景,误操作DROP DB或TABLE,常规的恢复操作是还原全备份,并用mysqlbinlog追加到drop操作前的位置。如果需要恢复的binlog的日志量比较大而我们只希望恢复某个DB或某张表,常规操作会花费较长的时间。在网上看到了借助SQL Thread来应用binlog的方法,做测试验证是可行的。【原理】1、Binlog是MySQL Serve...

2018-10-25 18:33:00 150

转载 MySQL服务器发生OOM的案例分析

【问题】有一台MySQL5.6.21的服务器发生OOM,分析下来与多种因素有关【分析过程】1、服务器物理内存相对热点数据文件偏小,62G物理内存+8G的SWAP,数据文件大小约550G触发OOM是binlog备份的cp进程2、mysqld实际使用物理内存远大于innodb_buffer_pool_size设置,与我们之前分析的内存分配管理模块有关,建议更换为je...

2018-10-25 16:36:00 375

转载 NUMA导致的MySQL服务器SWAP问题分析与解决方案

【SWAP产生原理】先从swap产生的原理来分析,由于linux内存管理比较复杂,下面以问答的方式列了一些重要的点,方便大家理解:1、swap是如何产生的swap指的是一个交换分区或文件,主要是在内存使用存在压力时,触发内存回收,这时可能会将部分内存的数据交换到swap空间。2、内存回收的机制<1>Linux内核使用cache对部分文件进行缓存,提升文...

2018-10-23 13:27:00 166

转载 CentOS 7下MySQL5.7.23的服务配置参数测试

CentOS 7默认安装MySQL5.7.23,服务管理发生了变化,从sysvinit(service mysql start)变化为systemd(systemctl start mysqld.service)最近测试了下MySQL5.7.23的服务管理参数,测试主要涉及Restart ,RestartPreventExitStatus,RestartSec,StartLimitI...

2018-10-22 10:11:00 115

转载 MySQL服务器 IO 100%的案例分析

【问题】有台MySQL 5.6.21的数据库实例以写入为主,IO %util接近100%写入IOPS很高【分析过程】1、通过iotop工具可以看到当前IO消耗最高的mysql线程2、查看线程49342的堆栈,可以看到正在进行redo log的刷新,对应的是9号文件3、9号文件对应的是redo log的第一个文件为什么mysql进程...

2018-10-19 10:33:00 220

转载 MySQL5.7 GTID学习笔记

GTID(global transaction identifier)是对于一个已提交事务的全局唯一编号,前一部分是server_uuid,后面一部分是执行事务的唯一标志,通常是自增的。下表整理了GTID常用的查看命令,以及变量的描述及原理,供大家参考(以下基于MySQL5.7,对于MySQL5.6的GTID由于存在性能问题,不推荐使用)角色常用...

2018-10-18 10:03:00 133

转载 CentOS 7下升级MySQL5.7.23的一个坑

发现CentOS 7下升级MySQL5.7.23的一个坑,以前面升级到MySQL 5.7.23的一个集群为例在我们环境下打开文件描述符个数的参数open_files_limit在MySQL 5.6.21下都统一配置为65535,而CentOS 7系统下安装MySQL5.7.23的open_files_limit参数的默认值为5000否则像分区表数量较多的集群,打开的文件个数过...

2018-10-17 18:10:00 198

转载 MySQL大事务导致的Insert慢的案例分析

【问题】有台MySQL服务器不定时的会出现并发线程的告警,从记录信息来看,有大量insert的慢查询,执行几十秒,等待flushing log,状态query end【初步分析】从等待资源来看,大部分时间消耗在了innodb_log_file阶段,怀疑可能是磁盘问题导致,经过排查没有发现服务器本身存在硬件问题后面开启线程上升时pstack的自动采集,定位MySQ...

2018-10-17 10:28:00 634

转载 MySQL Insert语句单个批次数量过多导致的CPU性能问题分析

【问题】最近有台服务器比较频繁的CPU报警,表现的特征有CPU sys占比偏高,大量慢查询,大量并发线程堆积。后面开发对insert的相关业务限流后,服务器性能恢复正常。【异常期间线程处理情况】下图是当时生产环境异常时抓取的信息,该事务正在执行insert,已经执行5秒,线程运行在innodb内核,状态是thread declared inside InnoDB,还有4...

2018-10-15 15:20:00 803

转载 MySQL出现Waiting for table metadata lock的原因以及解决方法

MySQL在进行alter table等DDL操作时,有时会出现Waiting for table metadata lock的等待场景。而且,一旦alter table TableA的操作停滞在Waiting for table metadata lock的状态,后续对TableA的任何操作(包括读)都无法进行,因为他们也会在Opening tables的阶段进入到Waiting fo...

2018-07-03 14:52:00 954

转载 Linux基础命令—网卡

#1、实时查看网卡流量#sar -n DEV 1 5 【每间隔1秒刷新一次,共5次】sar -n DEV 1 5IFACE 表示设备名称rxpck/s 每秒接收的包的数量txpck/s 每秒发出的包的数量rxKB/s每秒接收的数据量,单位KByte 1KB=1000byte=8000bittxKB/s每秒发出的数据量,单位KByte计算实际速度,取 r...

2018-07-02 17:29:00 358

转载 SHOW SLAVE STATUS解读

*************************** 1. row *************************** Slave_IO_State: Master_Host: 192.168.15.15 Master_User:replication...

2018-07-02 16:12:00 111

转载 perf工具crash的问题

perf抓取时系统crash的情况。找前同事了解到perf工具导致系统crash的一种情况,perf工具默认是使用cycles,这个硬件事件是使用NMI,可能会导致内核错误。之前文档上的perf命令更新下,指定使用软件事件cpu-clock(注意:不知道perf命令还有没有别的坑,请注意生产上谨慎使用)perf record -p `pidof mysqld` -e cp...

2018-07-02 13:30:00 317

转载 【原创】MySQL5.7.18(ptmalloc VS tcmalloc VS jemalloc)性能测试

ptmalloc(glibc的malloc)是Linux提供的内存分配管理模块,目前我们MySQL默认使用的内存分配模块。tcmalloc是Google提供的内存分配管理模块。jemalloc是FreeBSD提供的内存分配管理模块。下面用sysbench对MySQL5.7.18搭配三种不同的内存分配管理模块做了压测。【sysbench配置】16个table...

2018-07-02 10:35:00 499

转载 【原创】SQL Server常用脚本整理

--1、禁用启用账号账号set nocount onSELECT 'ALTER LOGIN ' + name + ' ENABLE' FROM master.sys.server_principals WHERE name in ('loginname') and is_disabled=0--2、KILL主机上的应用程序账户进程SELECT '...

2018-06-29 14:51:00 181

转载 【原创】MySQL复制slave服务器死锁案例

MySQL复制刚刚触发了一个bug,该bug的触发条件是slave上Xtrabackup备份的时候执行flushs tables with read lock和show slave status有可能和SQL Thread形成死锁。该bug在MySQL5.6.23上已修复,https://bugs.mysql.com/bug.php?id=7030715:24分开始收到报...

2018-06-29 13:45:00 315

转载 【原创】MySQL Can't create a new thread报错分析

今天有两台服务器都出现了Can't create a new thread报错。【故障处理过程】故障发生后登录服务器,检查mysql进程正常,但登录mysql报下面错误ERROR 1135 (HY000): Can't create a new thread (errno 11); if you are not out of available memory, you ...

2018-06-29 13:32:00 520

转载 【原创】MHA二次检测功能测试

MHA提供了很多扩展的功能,其中有一个参数是secondary_check_script,这个参数可以使我们自定义扩展多路由,多链路的二次检测功能。减少网络故障切换,降低脑裂的发生。在虚拟机上做了如下测试,供大家参考。5台服务器,MySQL版本5.7.18,角色如下:Master(192.168.137.100)Slave1(192.168.137.101)S...

2018-06-28 11:09:00 568

转载 【原创】MHA对MySQL master Too many connections错误的处理机制

有台服务器故障期间的现象:1、 可以正常ping通2、 telnet服务端口报Too many connections错误3、 ssh连接不上查看MHA的管理日志,在强制关机前的health check都是正常的这点比较奇怪,因此在测试集群上模拟生产的问题做了测试1、 模拟压测制造master Too many connections2、 观察...

2018-06-28 11:02:00 130

转载 【原创】MySQL CPU %sys高的案例分析(二)

后面又做了补充测试,增加了每秒context switch的监控,以及SQL执行时各步骤消耗时间的监控。【测试现象一】启用1000个并发线程的压测程序,保持压测程序持续运行,保持innodb_spin_wait_delay默认值不变在10:17:14秒将innodb_spin_wait_delay值从默认值6调整为18,看到sys从40%降到20%TPS从1.7...

2018-06-28 10:21:00 161

转载 【原创】MySQL CPU %sys高的案例分析(一)

【现象】最近关注MySQL CPU告警的问题时,发现有一种场景,有一些服务器最近都较频繁的出现CPU告警,其中的现象是 SYS CPU占比较高。下面的截图来源于“MySQL CPU报警”采集的文件【问题分析】可以分析出这服务器CPU升高的原因是由于表的高并发写入引起。优化方案通常是通知开发停止写入或降低写入频率。究竟是什么原因导致高并发写入时CPU sys...

2018-06-28 10:13:00 440

转载 【原创】Linux常用脚本

#1、启用停用VIPsudo /etc/ha.d/resource.d/IPaddr 10.10.10.10 startsudo /etc/ha.d/resource.d/IPaddr 10.10.10.10 stop#2、查看MySQL QPSmysqladmin --login-path=local -r -i 1 -c 10000 ext |\aw...

2018-06-27 18:32:00 101

转载 【原创】MySQL常用脚本整理

#1、查看表容量空间SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_ROWS,ROUND(DATA_LENGTH/1024/1024/1024) AS 'data_size(G)',ROUND(INDEX_LENGTH/1024/1024/1024) AS 'index_size(G)',ROUND(DATA_FREE/1024/1024/1024) A...

2018-06-27 18:15:00 121

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除