随笔分类 - MySQL
摘要:前言:今天一个朋友问了一个问题,原文如下:mysql5.1,myisam的表,select count(*) as total FROM m_bff WHERE from_uid='73149293' AND isdeleted=0。from_uid上有索引,第一次执行这个句子速度慢,1秒多,用show profile看都慢在Sending data上。但是紧接着我加上sql_no_cache,执行只需要0.01秒了,有好多句子都是类似的情况第一次慢,后来加上sql_no_cache也不慢,Key_blocks_unused也很多,请教下这种是什么原因呢?问题总结一下就是:对于
阅读全文
摘要:本博客已经迁移至:http://cenalulu.github.io/本篇博文已经迁移,阅读全文请点击:http://cenalulu.github.io/mysql/mysql-has-gone-away/在平时和开发的交流 以及 在论坛回答问题的或称中会发现这个问题被问及的频率非常高。程序中报错...
阅读全文
摘要:背景:今日看到一个bug:http://bugs.mysql.com/bug.php?id=67448大义就是配置 global & session max_allowed_packet 后,client仍然会报:ERROR 2020 (HY000): Got packet bigger than 'max_allowed_packet' bytes 这样的错误。觉得和之前自己的理解有偏差,所以做了具体实验,并记录成此博客。1. 环境准备生成一个32M大小的文件,并导入到表的一个字段中#! /bin/shi=0;while [ $i -lt 33554432 ]doec
阅读全文
摘要:本博客已经迁移至:http://cenalulu.github.io/本篇博文已经迁移,阅读全文请点击:http://cenalulu.github.io/mysql/mysql-book-for-newbie/前言:在chinaunix上总是有很多同学咨询想学习数据库,或者是为入行DBA做些准备。...
阅读全文
摘要:背景:卖咖啡在5月份推出了MySQL Audit Plugin,经过几个月的更新,目前已经是1.0.2版本。Oracle在收购MySQL以后,同样也在5.5的Audit API基础上推出了 MySQL Audit Plugin。本次测试就是基于这两款产品进行的。正文:技术对比:OracleMcAfe...
阅读全文
摘要:本博客已经迁移至:http://cenalulu.github.io/本篇博文已经迁移,如果显示不正常请使用此链接:http://cenalulu.github.io/mysql/innodb-single-tablespace-recovery/前言:随着innodb的普及,innobackup也...
阅读全文
摘要:前言:最近Oracle MySQL在其官方Blog上贴出了 5.6中一些变量默认值的修改。其中innodb_old_blocks_time的默认值从0替换成了1000(即1s)关于该参数的作用摘录如下:how long in milliseconds (ms) a block inserted into the oldsublistmust stay there after its first access before it can be moved to the new sublist.Increasing this value protects against the buffer po
阅读全文
摘要:背景:最近,线上Row Based Replication(下称RBR)环境中遇到了一个Bug。这个bug简单的描述就是:RBR对于DML需要通过table-map的event来标注每一个有更新的表。而当一个DML同时操作多个表,且其中2个表的mapid相同时(通常为0),会导致slave执行这个event时crash,并重启mysqld实例可见这个bug的毁灭性极大。那么table-map-id 究竟从何而来?有什么办法知道每个表table-map-id,从而进行一些必要的监控呢?下文将用几个例子来进行分析说明。1. table-map-id 和 Innodb的table-id是否是同一个概
阅读全文
摘要:这周GitHub网站发生了两次重大的不可访问事故,以及若干小时的服务降级。GitHub运维团队特地发了一篇Blog来总结整个事件的过程。事故的主要原因可以归结为:1. 数据库的Active角色在不应该发生failover切换时,进行了切换。 First, several failovers of the 'active' database role happened when they shouldn't have. 2. 数据库集群发生了脑裂,导致集群管理软件(Pacemaker+HeartBeat)做了错误的操作。Second, a cluster partitio
阅读全文
摘要:最近不止一次的被问及这么一个问题:一个含有TEXT字段的宽表,是否有必要把TEXT拆分出去作为一个独立的表,来提高性能?下面谈谈我个人的看法:一般来说,将TEXT字段,从一张操作频繁的表中拆分出去,成为一个Key-Value结构的独立表是 好处颇多的。其有利之处主要体现在下面三个方面:PS:以下的讨论对象均基于Innodb引擎1. 便于运维由于目前Innodb-plugin对于大多数DDL都是会有TABLE-LOCK的。这也就意味着,一张表的DDL时间越长,业务的不可访问时间也就越长。而决定一条DDL命令执行时长的两个关键因素就是:表行数,表物理文件大小。TEXT字段的拆分独立,能够很有效的减
阅读全文
摘要:本篇博文已经迁移,阅读全文请点击:http://cenalulu.github.io/mysql/column-row-reverse/本博客已经迁移至:http://cenalulu.github.io/前言:由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式。即同一个列中存储...
阅读全文
摘要:在平时的mysql文档学习中我们经常会看到这么一句话:MySQL tries to leave space so that future inserts do not incur un-necessary page splits (and thus higher IO cost). In an "ideal" world, MySQL tries to keep the index pages at 15/16-th full, but depending on insert order, this fill factor can be as low as 1/2大致含义就
阅读全文
摘要:本博客已经迁移至:http://cenalulu.github.io/本篇博文已经迁移,阅读全文请点击:http://cenalulu.github.io/mysql/mysql-timeout/前言:MySQL中有两个关于连接超时的配置项。他们之间在某些条件下会互相继承,那究竟这两个参数会在什么情...
阅读全文
摘要:前言:MySQL 的大表运维总是令人头疼的一件事,特别是大表表结构的修改尤为困难。首先,alter table 的process不可被kill , 一旦执行就不可回退。其次,大多数的alter table操作都会涉及 lock --- copy to new table --- rename --- unlock的过程,锁表时间会很长。本文不是讨论如何进行大表表结构变更, 而是汇总一些不涉及copy to new table这一步的alter table情况。这些情况下,mysql会直接修改frm文件,而lock的时间也仅是秒级的。MySQL 5.0 系列 (即5.0.x 版本)如果你是这个版
阅读全文
摘要:背景:众所周知,MySQL只支持一对多的主从复制,而不支持多主(multi-master)复制。当然,5.6的GUID功能的出现也带来了multi-master的无限可能,不过这个已经是题外话了。本文主要介绍一种非实时的适用于各版本MySQL的multi-master方法。内容简介:最初的思路来源于一位国外DBA的blog :http://thenoyes.com/littlenoise/?p=117基本原理就是通过SP记录当前 master-log的name和pos记录到表中,然后读取下一个master记录,执行stop slave / change master / start slave
阅读全文
摘要:情况描述:最近在分析服务器的slow-log和bin-log的时候,发现这两个log中有某些语句的execute time 极大例如:4294967295。log信息:#091008 21:40:04 server id 1 end_log_pos 3440531 Query thread_id=63169 exec_time=4294967295 error_code=0而出现这种极长执行时间的语句却不固定,最终通过以下的分析过程,找到了这个问题出现的原因updated at 2012-05-14: chinaunix 上也有网友表示遇到过这样的情况: 链接第一步:确认相关语句没有问题使用以
阅读全文
摘要:#preparecheck_args() && init()#start#根据配置决定是进行 copy_back, apply_log , bakcup 三种模式中的哪一个#下面具体介绍backup中(即备份)的具体过程copy_back() or apply_log() or backup()#以下是backup()函数中的内容#检查cmdline提供的连接参数是否能够连接MySQL 实例#并执行一句select语句,检测健康状态b.1 mysql_open();b.2 mysql_close();#该函数将调用xtrabackup进行备份。b.3 start_ibbacku
阅读全文
摘要:本博客已经迁移至:http://cenalulu.github.io/本篇博文已经迁移,阅读完整的文章请点击:http://cenalulu.github.io/mysql/cannot-rotate-relaylog/今天在运维一个mysql实例时,发现其数据目录下的relay-log 长期没有删...
阅读全文