开发上线完以后,到早上高峰期并发压力大,有可能因某个SQL的原因把数据库给打死,参考《一个引号导致1个小时网站打不开》,这个时候你可以用pt-kill杀死,但连接数过高,CPU负载很高,这个工具根本没法去处理,数据库这个时候已经成瘫痪状态,那么应该怎么办?首先要保证数据库不能被打死,先让数据库压力降下来,这里就要做一些限制措施。我们先用iptables封死3306端口,先把压力降下来,然后tail
如图:如果开发让修改表字段属性,建议用pt-online-schema-change。MySQL5.6的在线DDL会锁全表。注意这个坑。另外,增加、删除字段或索引不会锁全表,删除主键会锁全表。
咱们就说下这个例子,提醒广大开发在写SQL的时候一定要仔细!当时情况是这样的,一个慢SQL把数据库CPU连接数跑满,由于并发压力大,CPU空闲瞬时为0,过一会机器被HANG死,连接不上。因涉及公司隐私问题,我这里用测试表代替,咱们主要看看是怎么引起的。表结构:mysql> desc sbtest; +-------+------------------+------+-----+------
什么是远程管理卡,简单一句话:通过以太网对计算机的开机、重启、配置、维护,可以远程操作用的网卡设备。DELL服务器远程管理卡介绍:http://wenku.baidu.com/link?url=K9pst7sf80ro-gWI-9XZmDdBoXAH5mOdhfXDOij5sRM4ygXynqnhe7Ci7HIbKnk69O-JF7_Gw2U4JkGr8UlDOS6KPeAOI6pDZReX9Jf
SELECT s.* FROM pre_common_member s WHERE s.`username` LIKE('%植物大战僵尸%') LIMIT 100;like后面接'%关键字%' 这样是用不到索引的,会导致全表扫描,这条SQL查询耗时,见下图:耗时:27.89秒--------------------------------------------------------------
感谢读者张舒鳌指出勘误!
MySQL5.5里:MySQL5.6里:已经加密。但如果update mysql.user set password=password('654321') where User='hcy';还会是明文,如图:测试环境binlog_format = MIXED改为ROW模式:加密。
目前主流服务器都支持NUMA架构,我们可以通过命令numactl --hardware查看,如图:在这里,NUMA架构把CPU逻辑上划分为两个节点node0和node1,每个节点上分配4核CPU、16G内存。NUMA默认策略:内存优先分配给node0,当InnoDB_Buffer_Pool设置为22G时,node0使用完本地内存,此时就应该使用node1节点的内存,但它宁可使用SWAP,也不会选择
最近在审核SQL的时候,发现一些开发经常犯这个错误,下面我举个简单的例子,说明一下:查找出A表和B表id相同的记录(并且把B表没有的id记录也查询出来),且name名字等于'b'的记录。表数据:mysql> select * from t1; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b
上周日,早上快到6点,天还没亮,睡得正香,突然被一声短信惊醒,Too many connections!我这纳闷呢,搞啥活动呢?平常这都是低风期啊。登陆机器一查看慢日志,发现有这么一条SQL,很奇葩:跑了快1小时了,而且查询的结果还是0行。很奇怪到底在搞毛?我又查看了这个表,并没有aid=1的记录。周一询问了开发,都不知道这条SQL。最后猜想到,这是不是监控人员,搞的一个每隔15秒就连接一下,看看
我们知道在MySQL5.5里,如果想修改ib_logfile(redo log)文件大小,步骤是:一、set global innodb_fast_shutdown = 0;二、mysqladmin shutdown三、在my.cnf文件里修改innodb_log_file_size参数值四、mv ib_logfile* /bak(不移走,启动会报错)五、mysqld_safe --default
在检查慢SQL时,发现一条统计SQL执行过慢,如下:原SQLSELECT platform, channel, COUNT(DISTINCT(platformUserId)) as cnt FROM( SELECT platform, channel, platformUserId, MIN(insertTimestamp) as rtime FROM tsz_user
表结构(1000万行记录):mysql> show create table sbtest\G; *************************** 1. row *************************** Table: sbtest Create Table: CREATE TABLE `sbtest` ( `id` int(10) unsigned NO
网友黄华亮发了一条SQL的执行计划问t表的字段TOP_TITLE_ID是主键,为啥order by还会有Using temporary; Using filesort后来我把该表要了过来,在我的机器上做了下测试,如果改成如下SQL就没有Using temporary; Using filesort于是又在5.6上测试了一下,发现:同样的SQL语句,在MySQL5.6上就去掉了Using tempo
MySQL5.6出来一年了,对其新特性也有了了解,也基本上稳定了,等小版本在5.6.20就可以考虑将线上的数据库版本进行升级。为了更多网友今后升级工作,这里我模拟了生产环境对其进行一次升级,我选择的版本是Percona,选择的因素是线程池,这个只有MySQL企业版才支持,较之社区版有了性能的改善。视频地址:http://edu.51cto.com/lesson/id-18818.html
这篇文章生动的描述了线程池的妙处,它可以解决高并发数据库性能下降。每个客户端连接MySQL执行SQL语句会创建一个线程。一旦连接数量的增加超过某特定点性能将会下降。
xtrabackup迁移单独一张InnoDB表到远程服务器。我们知道MyISAM引擎可以单独把*.MYD和*.MYI拷贝到远程服务器上,但如果是InnoDB引擎,受限MySQL5.5版本限制,直接拷贝.ibd到远程服务器是不行的。因为在ibdata1文件里保存着表的字典信息,在ibd文件里保存着事务ID和日志序列号,这些对于每个服务器来说都是不一样的。所以在MySQL5.5里,针对InnoDB表迁
MySQL数据库CPU飙升紧急处理方法运行平稳的数据库,如果遇到CPU狂飙,到80%左右,那一定是开发写的烂SQL导致的,DBA首先要保证的是,数据库别跑挂了,所以我们要把那些运行慢的SQL杀死并记录到文件里,以便后面的排查。这里用到一个工具pt-kill,它可以帮助你。pt-kill --match-info "^(select|SELECT)" --busy-time 3 --victim
我们先看一下这个报错日志:InnoDB: Warning: a long semaphore wait: --Thread 140593224754944 has waited at btr0cur.c line 528 for 241.00 seconds the semaphore: X-lock on RW-latch at 0x7fd9142bfcc8 created in file di
预售网址:http://product.china-pub.com/3769079 一年多的辛苦终于出版了,感谢为我写序的朋友们!希望各位读者多多支持,如有任何问题,请直接联系我。
课程发布:http://edu.51cto.com/course/course_id-860.html
视频地址:http://edu.51cto.com/course/course_id-860.html视频里讲得不清楚的地方,如有问题,请在视频下面的“课程评价”给我回复。
我这有个业务,专门存储LOG日志的,每天都会有上千万数据,所以采用了archive存储引擎,这样写入上较快,也比较节省空间。archive存储引擎这里简单介绍下:这个可以说和MyISAM引擎差不多,备份的时候直接cp拷贝数据文件,恢复时直接cp拷贝到MySQL数据目录,而且在空间上节省了不少,下面来看看。通过物理文件,可以明显的对比出来。看看磁盘IO性能图压力有所变小。好,下面说一个注意事项。今天
刚刚接到报警短信,从库宕机,马上通知机房重启,在检查MySQL时,发现同步挂了,报主键冲突,询问开发是不是有往里面写数据,回答没有。这就奇怪了,怎么会无缘无故报错呢?在检查了my.cnf配置文件,发现有个参数没有配置:innodb_overwrite_relay_log_info = 1当从库宕机后,重新开启主从复制同步,它可以重新执行已提交事务,这样就会造成同步失败,而这个参数就会避免这个问题的
我是在两台虚拟机做的测试。如果用传统SCP远程拷贝,速度是比较慢的,如图:现在采用lz4压缩传输。LZ4是一个非常快的无损压缩算法,压缩速度在单核300MB/S,可扩展支持多核CPU。它还具有一个非常快速的解码器,速度单核可达到和超越1GB/S。通常能够达到多核系统上的RAM速度限制。项目主页:http://code.google.com/p/lz4/安装(在本地和远程均安装lz4压缩工具)# w
这次我有幸参加了51CTO举办的2013年大数据峰会,这次大会的主题是大数据的运维(第一天)以及大数据的分析(第二天)。 大数据到底是啥意思呢?从字眼上就是很多很大量的数据,可以叫做海量数据。 当数据很小时,你可以用一台机器顶住数据访问压力,再大时你可以加内存换SSD硬盘,或者采购性能很强劲的小型机,通过硬件去解决。 从架构层出发,于是就发展到了读写分离,同时
mysql> select * from ss; +----+--------+ | id | sid | +----+--------+ | 1 | 001230 | &nb
2012 oracle数据库会议总结
DELIMITER $$ DROP PROCEDURE IF EXISTS `hcymysql`$$ CREATE DEFINER=`admin`@`%` PROCEDURE `hcymysql`(IN v_tname VARCHAR(20))
mysql> select * from t2; +----+----------+---------+ | id | SerialNO | InnerNo | +----+----------+---------+ | 1&nbs
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号