来新公司前,领导就说了,线上生产环境Mysql库经常会发生日间内存爆掉被killed的情况,结果来到这第一天,第一件事就是要根据线上服务器配置优化配置,同时必须找出现在mysql内存持续增加爆掉的原因,虽然我主业已经不是数据库更不是dba了.看了下mysql占用内存区域的分布: [root@iZ23nn1p4mjZ osm-all]# pmap -x 55245524: /usr/local/Percona-Server-5.7.16-10-Linux.x86_64.ssl101/bin/mys…
前文提要 承接前文<一次线上Mysql数据库崩溃事故的记录>,在文章中讲到了一次线上数据库崩溃的事件记录,建议两篇文章结合在一起看,不至于摸不着头脑. 由于时间原因,其中只讲了当时的一些经过以及我当时的一些心理活动,至于原因和后续处理步骤并没有在文章中很清晰的写出来,以致于很多朋友说看得不清不楚的,这里向他们道个歉,主要是上周真的没有足够的时间将两篇文章同时准备好,不然也不会草草结尾了,而且上篇文章中主观因素占了较大的比重,因为回忆起这件事的时候确实有很多想法,因此显得有些个人化.日记化了.…
前文提要 承接前文<一次线上Mysql数据库崩溃事故的记录>,在文章中讲到了一次线上数据库崩溃的事件记录,建议两篇文章结合在一起看,不至于摸不着头脑. 由于时间原因,其中只讲了当时的一些经过以及我当时的一些心理活动,至于原因和后续处理步骤并没有在文章中很清晰的写出来,以致于很多朋友说看得不清不楚的,这里向他们道个歉,主要是上周真的没有足够的时间将两篇文章同时准备好,不然也不会草草结尾了,而且上篇文章中主观因素占了较大的比重,因为回忆起这件事的时候确实有很多想法,因此显得有些个人化.日记化了.…
背景 前段时间收到运维反馈,线上Mysql数据库凌晨时候出现慢查询的报警,并把原始sql发了过来: --去除了业务含义的sql update test_user set a=1 where id=1; 表数据量200W左右,不是很大,而且是根据主键更新. 问题排查 排查Mysql数据库 我看到sql后第一反应就是是不是数据库出问题了,每个小时都有业务,偏偏白天业务高峰时间段正常,凌晨业务量很少时候出问题,让运维先检查了数据库的状态,反馈是数据库正常. 排查业务代码(第一次) 这块业务代码比较复杂…
昨晚我正在床上睡得着着的,突然来了一条短信. 啥,线上MySQL死锁了,我赶紧登录线上系统,查看业务日志. 能清楚看到是这条insert语句发生了死锁. MySQL如果检测到两个事务发生了死锁,会回滚其中一个事务,让另一个事务执行成功.很明显,我们这条insert语句被回滚了. insert into user (id, name, age) values (6, '张三', 6); 但是我们怎么排查这个问题呢? 到底跟哪条SQL产生了死锁? 好在MySQL记录了最近一次的死锁日志,可以用命令行…
开心一刻 明明是个小 bug,但就是死活修不好,我特么心态崩了...... 前言 后文会从 Windows.Linux 两个系统来做示例展示,有人会有疑问了:为什么要说 Windows 版的 ? 目前市面上还是有很多 Windows 服务器的,应用于传统行业.政府结构.医疗行业 等等:两个系统下的情况都演示下,有备无患 后文中用到了两个工具:Processor Explorer.MAT,它们是什么,有什么用,怎么用,本文不做介绍,不知道的小伙伴最好先去做下功课 cpu 100% 下面的示例中,…
前言 在发生故障切换后,经常遇到的问题就是同步报错,数据库很小的时候,dump完再导入很简单就处理好了,但线上的数据库都150G-200G,如果用单纯的这种方法,成本太高,故经过一段时间的摸索,总结了几种处理方法. 生产环境架构图 目前现网的架构,保存着两份数据,通过异步复制做的高可用集群,两台机器提供对外服务.在发生故障时,切换到slave上,并将其变成master,坏掉的机器反向同步新的master,在处理故障时,遇到最多的就是主从报错.下面是我收录下来的报错信息. 常见错误 最常见的3种情…
Mysql作为一个常用数据库,在互联网系统应用很多.有些故障是其自身的bug,有些则不是,这里以前段时间遇到的问题举例. 问题 当时遇到的症状是这样的,我们的应用在线上测试环境,JMeter测试过程中,发现每次压力测试开始时访问低前几个http request请求会超时,而之后的请求持续测试中都不会.最后一点是Tomcat的log并没有报什么错误. 压测的内容就是起200线程不停的向这个http页面发送请求,这个页面逻辑也比较简单,会在后端向数据库插入一条数据,连接池采用阿里的Druid(这个坑…
介绍 从系统管理员或 DBA 的角度来讲, 总期望将线上的各种变更限制在一个可控的范围内, 减少一些不确定的因素. 这样做有几点好处: . 记录线上的库表变更; . 对线上的库表变更有全局的了解; . 如果有问题, 方便回滚操作; 从这三点来看, 有很多种方式可以实现, 比如通过 migrate 等工具强制所有的操作都以统一的方式执行, 这需要开发人员做更多的配合, 所以这类工具在非规模话的业务场景中较难实现; 另外管理员或 DBA 也可以通过知识库比如 redmine 等类似的方式记录变更,…
文章简介 工作这几年,技术栈在不断更新,项目管理心得也增加了不少,写代码的速度也在提升,感觉很欣慰,毕竟是在一直进步,但是过程中也有许许多多的曲折,也踩过了数不尽的坑坑洼洼,从一个连百度都不知道用的萌新到一个悠哉悠哉的老油子也不容易,很多人应该都有类似的经历和感受,因此博客中也会整理一些曾经碰到过的事故和问题给自己提个醒. 由于接下来要在perfect-ssm项目中引入缓存模块,恰好在翻看日记时看到了这次事故的记录,因此整理了这篇文章,根据事件发生时的日记来回顾一下这次事件,通过这次数据库事故的…
起因: 线上 user 数据库没有自增字段,数据量已经达到百万级.无论是给离线仓库还是数据分析同步数据,没有主键自增 id 都是杀手级的困难.所以在使用 create_time 痛苦了几次之后准备彻底来解决这个问题. 解决问题的思路: 当时理了两个思路,一个是直接找个夜生人静的夜晚,drop 掉目前的 primary key .然后再 add 一个 id 字段做 primary key auto increament .我觉得这个方法对于 100w 以下的数据表是一个不错的方法,首先简单,其次找…
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 文章简介 工作这几年,技术栈在不断更新,项目管理心得也增加了不少,写代码的速度也在提升,感觉很欣慰,毕竟是在一直进步,但是过程中也有许许多多的曲折,也踩过了数不尽的坑坑洼洼,从一个连百度都不知道用的萌新到一个悠哉悠哉的老油子也不容易,很多人应该都有类似的经历和感受,因此博客中也会整理一些曾经碰到过的事故和问题给自己提个醒. 由于接下来要在perfect-ssm项目中…
        最近线上项目报了一个MySQL死锁(DealLock)错误,虽说对业务上是没有什么影响的,由于自己对数据库锁这块了解不是很多,之前也没怎么的在线上碰到过.这次刚好遇到了,便在此记录一下.   出现死锁问题背景         项目层面:报错的项目做的是一个批量下单的动作,会同时写入多条订单数据,代码之前写的是一个事务中一个循环一条一条insert到数据库(至于为啥没用批量插入就不追究了,历史原因了).         数据库层面:一张test表(非线上真实表),比较重要的是有一个…
前言:2012年的笔记整理而得,发布个人博客,做备忘录使用. 背景:线上慢查询日志监控,得到如下的语句:       发现:select doc_text from t_wiki_doc_text where doc_title = '谢泽源'; 这条语句昨天执行特别的慢 1.查看上述语句的执行计划:  mysql> explain select doc_text from t_wiki_doc_text where doc_title = '谢泽源'; +----+-------------+…
前言 生产环境的数据库往往需要经过严格的安全限制,所以禁用密码登录,使用秘钥的方式是一种相对安全的登录方式. 原理: 角色: 主机A:其他主机,有访问线上数据库的权限 主机B:线上数据库的主机 主机C:本机电脑,无访问线上数据库的权限 在本机C上(无访问B的权限),通过ssh配置的主机A(有访问B的权限),访问Navicat常规配置的主机B,即以A的身份连接使用B. 前期准备 生成ssh密钥对.可参考前期博文:快速通道 Navicat配置登录 1.连接的主机配置,如果连接的是线上数据库,就用线上…
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CDA数据分析师 豆瓣9.4分!这场线上演唱会到底多好看? 首先让我们看到豆瓣上的数据:截止到目前为止,五月天的这次线上演唱会共有10万余人进行了评价,目前豆瓣评分为9.4分,是非常高的成绩了. 豆瓣评分分布 进一步分析可以看到,评论中有68.4%的人给出了满分5星,其次24.2%的人给出了4星. 豆瓣评论词云图 豆瓣评论中大家都在说些什么呢?可以看到"太短&quo…
今天早上来上班,发现zabbix一直告警主从延迟,mysql slave Seconds_Behind_Master (mysql.slave_status[Seconds_Behind_Master]): 69登录MySQL从库查看 slave状态,Seconds_Behind_Master: 10562,确实存在延迟 mysql> show slave status\G*************************** 1. row ***************************…
前言 在发生故障切换后,经常遇到的问题就是同步报错,下面是最近收集的报错信息. 记录删除失败 在master上删除一条记录,而slave上找不到 Last_SQL_Error: Could not execute Delete_rows event on table hcy.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysq…
大家好,我是历小冰. 今天我们来详细了解一下主从同步延迟时读写分离发生写后读不到的问题,依次讲解问题出现的原因,解决策略以及 Sharding-jdbc.MyCat 和 MaxScale 等开源数据库中间件具体的实现方案. 写后读不到问题 MySQL 经典的一主两从三节点架构是大多数创业公司初期使用的主流数据存储方案之一,主节点处理写操作,两个从节点处理读操作,分摊了主库的压力. 但是,有时候可能会遇到执行完写操作后,立刻去读发现读不到或者读到旧状态的尴尬场景.这是由于主从同步可能存在延迟,在主…
方法一: 使用 show processlist 语句,查找负荷最重的 SQL 语句,优化该SQL,比如适当建立某字段的索引. 方法二: #查看慢SQL日志是否启用mysql> show variables like 'log_slow_queries';  #查看执行慢于多少秒的SQL会记录到日志文件中mysql> show variables like 'long_query_time';#配置my.ini文件(inux下文件名为my.cnf), 查找到[mysqld]区段,增加日志的配置…
一.现象 发运车次调用发车接口时发生异常,后台抛出数据库死锁日志. 二.原因分析 通过日志可以看出事务T1等待 heap no 8的行锁 (X locks 排他锁) 事务T2持有heap no 8的行锁,等待heap no 7的行锁 两个更新运单sql发生死锁. 三.代码追踪 发车接口:/ltl/loadShiftOrg/send 更新运单状态通过循环遍历进行操作,比较耗时. 其他接口更新运单导致发生死锁 在发车接口之前还调用了另外一个接口 /ltl/loadShift/saveOrUpdate…
看到网上很多说修改 但是在mysql 5.7中没有这个参数设置,故放弃: 结合本项目sina_id 10位超过int的最大范围4294967295,所以报错,修改为bigint  即可.…
从发现问题,到最后解决一共消耗两个半小时(7:30~10:00),报警电话16通,警察坐镇,未完待续 ......…
一个小的工具网站,用了sqlite数据库,在并发小的情况一切正常,但是并发量上来之后,就报"out of memory"错误了. 分析了代码,就是很简单的根据一个条件取一段数据,并且 datareader也是释放了的. 那问题出在那里了呢?经分析,connstring每次都是实例化了一个打开,但是未关闭,也许是这个问题引起的,所以想到联接池没有启用. 在联接字符串里面设置 Pooling = true;后 问题解决.…
之前一直运行正常的数据分析平台,最近一段时间没有注意发现日志索引数据一直未生成,大概持续了n多天,当前状态: 单台机器, Elasticsearch(下面称ES)单节点(空集群),1000+shrads, 约200G大小. 问题排查 服务器内存,CPU状态检查 使用 top 查看服务器 cpu,内存等占用情况,如下图示(当时楼主的服务器ES应用的CPU占用在90%以上,肯定有问题) 内存占用也极高(当时楼主的8G内存的服务器仅剩下150M左右的空闲,肯定是ES的问题) ES集群状态 查看ES集群…
不知道什么情况 在线创建模块,DLL被删除了,但是模块的相关数据无法删除.可以按照下面的方法临时用一下. 产生这个的原因,好像是Config里面的NeedInit一直都是true,没有改为false,空了再测试一下这个问题 位置:Rookey.Frame.Operate.Base\CommonOperate.cs 方法:在“查询记录”里面的第二个Count方法 具体修改:在CommonOperate类的方法Count里面加上try catch,临时可以使用一下. errMsg = string.…
INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371dao.ITaskDao.callProcedure: ==> Preparing: call sp_one( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ); INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-…
upload ClientException Read timed out com.aliyun.openservices.ClientException: Read timed out         at com.aliyun.common.utils.ExceptionFactory.createNetworkException(ExceptionFactory.java:19)         at com.aliyun.common.comm.DefaultServiceClient.…
(1).主从不一致故障,从库宕机,从库启动后重复写入数据报错解决与预防:relay_log_info_repository=TABLE(InnoDB)参数解释说明:若relay_log_info_repository为FILE,当设置为0,交由OS刷新磁盘,受参数sync_relay_log_info的影响,默认为10000次刷新到磁盘:若relay_log_info_repository为TABLE,且为INNODB存储,则无论为任何值,则都每次event都会更新表.relay_log_inf…
原因1. MySQL 服务宕了 判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长 $ mysql -uroot -p -e "show global status like 'uptime';" +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Uptime | 68928 | +---------------+-------+ 1 row in set…