MySQL生产环境突发故障处理手册

标签: mysql 生产 环境 | 发表时间:2011-09-05 09:16 | 作者:(author unknown) gOODiDEA
出处:http://www.mysqlops.com
1. LOAD飙高 一般导致MySQL服务器LOAD突然飙高,可能的五种情况: 1>.全表扫描的SQL语句; 2>.SELECT操作语句的执行计划走错; 3>.存在UPDATE/DELETE 语句没有索引可选择,而导致堵塞其他SQL语句的执行; 4>.存在修改表结构或OPTIMIZE 语句执行; 5>.大数据量的导入 或 导出,尤其数据库的逻辑备份操作; 6>.业务量大到超过服务器处理能力(我们大家都高度关注业务发展,以及公司业务特点,    还有与开发和运营保持良好联系,很难出现未知的业务突然爆发性增长); 要解决LOAD飙高,必须先找到造成飙高的真实原因,请登陆数据库服务器后,执行命令: SHOW PROCESSLIST;(适合MySQL各种版本) 或 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND <> ‘sleep’ AND TIME>100;(5.1.x系列及以上版本) 若一直处在执行状态,且执行时间比较久,可以分析下SQL语句执行计划: EXPLAIN SQL-statement; 若执行计划不合理,则可以根据SQL类型选择是否与应用负责人联系。首先,查找造成服务器LOAD飙高的PID,特别是DELETE 或UPDATE等会堵住其他SQL语句的PID,然后进入MySQL命令行工具中,对一些SQL先记录下来,再适情考虑执行:kill sql_pid; 1.1 统计信息更新 单表索引统计信息查看命令:SHOW INDEXES FROM tablename; 若发现其统计信息存在偏差,则可以执行:ANALYZE LOCALE TABLE tablename; 备注:请加上LOCALE 参数,从而使此语句执行时不需要登记到二进制文件中。 1.2 碎片整理和统计信息更新 OPTIMIZE 操作等于recreate + analyze 的组合操作,所以会堵塞更新类型SQL语句。对于备机上跑只读类型操作的业务,可以考虑使用此操作命令,对于主服务器不建议使用此命令,为此备机上执行OPTIMIZE 语句,必须这样写: [...]

相关 [mysql 生产 环境] 推荐:

[MySQL] 生产环境MySQL数据库事务一直在RUNNING

- - CSDN博客数据库推荐文章
运营人员反映,有一单子提交卡住了,页面一直没有返回. 1,刚开始怀疑是应用服务器或者db压力过高hang住了,马上去check应用服务器以及db的负载,看起来都OK,蛮低的,应该不是DB性能问题. 2,最后去看下是否是表锁住了,查看到有2个事务一直RUNNING,没有结束. 3,通过trx_mysql_thread_id: 1662332的去查询information_schema.processlist找到执行事务的客户端请求的SQL线程.

MySQL生产环境突发故障处理手册

- gOODiDEA - MySQL OPS
1.2 碎片整理和统计信息更新 OPTIMIZE 操作等于recreate + analyze 的组合操作,所以会堵塞更新类型SQL语句. 对于备机上跑只读类型操作的业务,可以考虑使用此操作命令,对于主服务器不建议使用此命令,为此备机上执行OPTIMIZE 语句,必须这样写: [...].

生产环境 MySQL 表的维护:check、optimize和analyze

- - CSDN博客数据库推荐文章
        optimize可以回收空间、减少碎片、提高I/O.         目前支持的存储引擎有:InnoDB、MyASIM和ARCHIVE.         如果是Replication环境、可加NO_WRITE_TO_BINLOG(或者LOCAL、意思完全相同)、比如:.         以下是一个简单测试:.

MySQL数据库开源软件版本 生产环境GA版本如何选择

- - MySQLOPS 数据库与运维自动化技术分享
很多技术朋友向我咨询过关于选择MySQL数据库软件产品的版本事宜,他们对于开源软件产品的版本选择没有头绪,不知道从何下手. 不过,我们本文主要是介绍开源数据库产品的版本如何选择,如何选择生产环境的MySQL数据库版本. MySQL数据库版本的选择需要经过那些工序. 顺道分享下我们DBA团队是如何为生产环境,选择合适的MySQL数据库版本.

PHP+MySQL环境下SQL Injection攻防总结

- rokeyhu - 老王的技术手册 ( 我的新博客:http://huoding.com )
程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过. 其实当黑客SQL Injection时,同样是一个TDD的过程:他们会先尝试着让程序报错,然后一点一点的修正参数内容,当程序再次运行成功之时,注入也就随之成功了. 假设你的程序里有类似下面内容的脚本:.

项目进阶 之 集群环境搭建(二)MySQL集群

- - CSDN博客推荐文章
        上次的博文中我们介绍了一下集群的相关概念,今天的博文我们介绍一下MySQL集群的相关内容.         MySQL群集技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单个MySQL服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障.         MySQL群集需要有一组计算机,每台计算机的角色可能是不一样的.

MySQL分库分表环境下全局ID生成方案

- - 数据库 - ITeye博客
数据库自增ID——来自Flicker的解决方案. 独立的应用程序——来自Twitter的解决方案. 在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作. 在单表时代,我们可以完全依赖于数据库的自增ID来唯一标识一个用户或数据对象. 但是当我们对数据库进行了分库分表后,就不能依赖于每个表的自增ID来全局唯一标识这些数据了.

在生产环境运行容器

- - IT瘾-tuicool
【编者的话】Vivek Juneja是一名工作首尔的云服务工程师. 他从2008年就开始接触云服务,是最早的AWS和Eucalyptus的使用者. 本文中总结了在生产环境中使用容器的几个方面,特别是对虚拟机与容器的混合部署的观点很值得推荐给大家. 如果只是把容器限制在开发测试环境中,那么您并没有享受到面向容器研发和发布工作的全部红利.

[MySQL FAQ]系列 — 线上环境到底要不要开启query cache

- - MySQL中文网
Query Cache(查询缓存,以下简称QC)存储SELECT语句及其产生的数据结果,特别适用于:频繁提交同一个语句,并且该表数据变化不是很频繁的场景,例如一些静态页面,或者页面中的某块不经常发生变化的信息. InnoDB Buffer Pool或者. MyISAM key buffer里读取结果.

linux、mysql、nginx、tomcat 环境下压力测试的主要调试参数

- - SegmentFault 最新的文章
一、linux 系统内核参数. /etc/sysctl.conf文件常用参数. net.core.netdev_max_backlog = 32768 #允许送到队列的数据包的最大数目 net.core.rmem_max = 8388608. #SOCKET读缓存区大小 net.core.wmem_max = 8388608.