- 博客(58)
- 资源 (3)
- 收藏
- 关注
原创 再议Seconds_Behind_Master
两年前就写过一篇文章解释Seconds_Behind_Master代表的含义以及它为什么不准确,今天同事高老师又提了一个有趣的问题:Seconds_Behind_Master到底是怎么计算的呢?高老师还特地去翻了一下源码来解释,我发现我之前的理解还是有出入的,于是自己也动手去翻了一下源码,下面就来更全面的解释一下它是怎么计算的,为什么不能完全可信。 我平时读MySQL源码比较
2015-06-19 11:35:44 1682
原创 MySQL filesort优化案例一则
今天遇到一个filesort优化的案例,感觉不错,分享出来。 MySQL中filesort是什么意思?官方手册定义: MySQL must do an extra pass to find out how to retrieve the rows in sorted order. The sort is done by going through all
2013-09-09 21:33:55 3753
原创 浅谈性能测试的难度
最近都有听到同事在说想招那种会测试(没猜错的话就是指数据库性能、存储性能测试)实习生。虽然我不确定同事是否有表达测试是一件很简单的事这个意思,但是我个人却觉得性能测试绝非想象中的那么简单(所以即使同事看到,也不要介意,我就是瞎忙活表达一下自己的想法,^_^),我觉得这是一个有点难度的活。 为什么说性能测试是一件有难度的活?因为它不像功能测试那么简单(写测试用例其实也不简单,但是结
2013-07-23 22:09:33 1878
原创 浅析innodb_support_xa与innodb_flush_log_at_trx_commit
很久以前对innodb_support_xa存在一点误解,当初一直认为innodb_support_xa只控制外部xa事务,内部的xa事务是mysql内部进行控制,无法人为干预(这里说的内部xa事务主要是指binlog与innodb的redo log保持一致性所采用的内部xa事务)。直到前阵子在微博上看到有人讨论mysql数据安全时才仔细去手册上查看了关于innodb_support_xa的解释,
2013-06-20 21:06:47 6195 1
原创 一点关于MySQL参数delay_key_write、myisam_recover_options的使用经验
最近在做数据库实例迁移的时候遇到了几个比较诡异的问题:MyISAM实例正常shutdown后rsync数据文件到另外一台机器上起实例后,访问表时提示表自动修复失败需要repair table。提示信息:Table './test/record_03' is marked as crashed and last (automatic?) repair failed表损坏后,利用repair
2013-05-03 23:10:46 2472 2
原创 MySQL limit与order by遇到的有趣问题
相信大家都知道MySQL的limit语法 select/delete/update .... limit start, len; 目的是限制查询或者更新几条数据。当然我们需要知道如果是更新语句带了limit,那么为了复制安全我们应该有 order by 主键/唯一键的语法,否则更新的行就不确定了。入正题,我这个场景是怎样的呢? 业务反映有一条SQL突然查询特别慢:select m
2013-04-22 20:26:46 2553
原创 MySQL Replication常见错误整理[持续更新...]
这篇文章旨在记录MySQL Replication的常见错误,包括自己工作中遇到的与网友在工作中遇到的,方面自己及别人以后进行查找。每个案例都是通过Last_IO_Errno/Last_IO_Error或者Last_SQL_Errno/Last_SQL_Error给出错误关键信息,所以以后查找时只需直接ctrl+F查找关键字就行。 Last_SQL_Errno: 1677
2013-03-16 16:38:03 4531
原创 使用tmpfs文件系统做MySQL tmpdir潜在的问题
在前面我写过一篇关于tmpfs和ramfs对比分析的文章。当初也是因为看到有人用/dev/shm(tmpfs)做MySQL tmpdir,于是就去学习了下tmpfs。今天再次谈这个问题是因为使用tmpfs做MySQL tmpdir(以后简称tmpdir)确实还是存在一些问题的,而且在某些特定的Linux 内核版本还会触发bug。今天写篇文章记录一下。 当时的机器环境信息:
2013-03-10 21:45:18 3225
原创 概谈“应用反应某些操作或查询慢”的处理方法(从MySQL DBA角度)
作为一个运维人员或多或少都会从应用开发那边得到类似“为什么用户反应很多操作慢?或者为什么我这里统计的日志里面出现了较多的查询较慢?”。那么遇到此问题我们该怎么来解决呢?我今天就利用自己的工作经验从MySQL DBA的角度来简单分析一下这个问题。 首先我们得区分这种查询慢或者操作慢发生的频率怎么样。按理来说这种状况不会经常发生,一个产品上线前都有专门的QA团队对其进行功能测试/压力
2013-01-14 15:44:14 6387 4
原创 MySQL slave状态之Seconds_Behind_Master
在MySQL的主从环境中,我们可以通过在slave上执行show slave status来查看slave的一些状态信息,其中有一个比较重要的参数Seconds_Behind_Master。那么你是否明白它的真正含义以及它是怎么计算的呢? 在之前我一直误以为Seconds_Behind_Master是表示slave比master落后多少,如果这个值为0的表示主从已经处于一致了(在
2013-01-11 21:17:35 12899 1
原创 Sysbench介绍与使用
最近用sysbench进行了较多的性能测试,也总结一下它的特点和用法和需要注意的事项。sysbench是一个多线程性能测试工具,可以进行CPU/内存/IO/数据库等性能测试。不过我绝大多数的时候都是用它来对数据库(MySQL)进行oltp测试。它能测哪些东西,怎么测让我从它的命令帮助来回答。~/zbs$ sysbench --helpMissing required command
2012-11-28 22:39:22 4437
原创 TokuDB6.5与InnoDB(1.1.18)性能对比测试
大家对MySQL存储引擎最熟悉的恐怕就是InnoDB了,InnoDB的性能还算不错,尤其适用互联网应用。但是InnoDB也不能称作完美,尤其是单实例MySQL的性能那还真不敢恭维,现在大多数互联网公司都是通过优秀的架构来弥补这点吧。今天说到的这个MySQL存储引擎单实例性能在特定情况下确实比InnoDB强很多,普通情况下也不差-----TokuDB------完美兼容MySQL。TokuDB是一个
2012-11-27 23:43:57 2872
原创 Linux下tmpfs与ramfs的对比分析
最近看到一篇文章介绍说用内存做MySQL的tmpdir能解决MySQL在使用磁盘临时表性能低的棘手问题,作者建议用tmpfs(常见的还有ramfs)。首先我觉觉得这个想法不错,但是局限性比较大,因为线上总会有些操作需要创建很大的临时表(虽然这样的次数可能不多),如果做一个很大内存的tmpfs那么显然浪费内存,如果做一个较小内存的tmpfs那么对于需要建大临时表的的操作会因为磁盘空间不够失败(比如a
2012-11-17 16:23:18 3899 2
原创 一个InnoDB 加锁的案例
最近一直在优化各个产品的SQL语句,同时还帮一个同事解决deadlock问题,收获就是对InnoDB加锁的理解更加深入了。先来看看今天的这个案例:mysql> select version();+----------------------+| version() |+----------------------+| 5.5.13.4-log
2012-11-05 23:02:43 2234 5
原创 淘宝物流MySQL slave复制数据丢失问题的个人整理
对于这几天微博上较火的关于淘宝物流MySQL slave复制数据丢失问题,我自己也比较关注,然后根据沃趣科技的一篇分析文章算是大概明白了其中的明细,现在再来根据我自己的理解理一下思路,顺便加深自己的理解。 简单的说这个问题的来由是这样的:主库的一些DML语句在从库上没执行。那么遇到这样问题,我们一般都是从这几个方面找问题,show slave status查看复制状态
2012-11-01 00:57:38 5322 2
原创 一点关于Linux mv/rm命令的“有趣事“
今天要说的mv/rm这两个命令的“趣事”是再使用mysql时遇到的。我先将问题贴出来,你也先思考一下,看看你的答案是什么。 环境:mysql5.5,innodb_file_per_table=1 问题:一个mysql实例在跑,数据库里面新创建一张表t1(因为是独立表空间所以有一个数据文件叫做t1.ibd),然后我rm或者mv t1.ibd文件,然后继续对这个表进
2012-09-24 20:36:41 2196 1
原创 Linux /proc第一篇---->/proc/pid记录了什么
由于自己Linux系统知识基础比较薄弱,准备比较全面学习,准备从/proc这个目录开始。实际上这个目录也基本上记录所有系统运行时和内核的一些信息,所以如果想对linux系统有一个比较全面的了解,从/proc入手应该是个不错的选择。准备将自己学习的过程记录下来,分享给同样需要的朋友,也便于以后查阅。今天准备介绍一下/proc/pid这个目录到底是做什么用的,它到底记录了哪些信息。
2012-09-20 21:15:26 2263
转载 web服务器nginx和apache的对比分析
今天准备较详细的对比一下apache httpd与nginx两个web服务器的异同点、优缺点。由于我并不是做web开发的,所以有什么理解错误还请指出,想要了解它们是因为工作中有时候会用到它,有系统中用到了nginx+apache。本文绝大多数资料都是摘抄网上,自己做的只就是整合网上零散的资源然后加上自己的一点见解。简单的说apache httpd和nginx都是web服务器,但两者适应的场景不同,
2012-09-15 16:06:37 5264
原创 浅析Innodb crash recovery
今天想谈谈Innodb crash recovery是因为工作中遇到的两个问题涉及到了它。实际上在何登成的博客也从源码角度分析这个过程,但是个人感觉一般人难得理解,事实上一般的DBA也没有必要做那么深入的研究。言归正传,当初工作中遇到的问题是什么呢?第一,一个同事执行一个大表操作,结果就很长时间没执行完,然后kill掉这个实例(这种做法不好),然后再重启实例时后mysql连上去,发现无法对刚才那个
2012-09-10 22:06:57 2729
原创 sync/fsync/fdatasync的简单比较
之前在研究MySQL的一个参数innodb_flush_method时,就涉及到了fsync/fdatasync这些系统调用[system call](什么是系统调用?它与库函数的区别在哪?参见这里)。接下来就简单的分析一下sync/fsync/fdatasync的区别。 sync():int sync( void )这就是它的原型,A call to this function
2012-09-07 21:27:50 6229
原创 对MySQL load data infile的一点想法
今天无意和同事讨论MySQL load data infile的问题,这个问题是由开发那边引起的:他们竟然对一个4千万行的数据直接load data infile插入测试库,结果可想而知,出问题了。跑了一整晚都没跑完,基本上是卡死了【注释1】。原因可能是原表索引太多,导致速度巨慢。于是做了一个实验验证load data infile是否为一个单独的事务。 步骤是这样的:1,开启b
2012-09-05 20:10:46 6576 2
原创 Linux环境变量LD_LIBRARY_PATH(指定share libraries)
今天在使用自己编译的MySQL时遇到了一个问题:使用自己编译的这个MySQL的mysql工具连接实例时老是报错*clientmsyql.so文件找不到,当时的连接方式为./basedir/bin/mysql ... 这样肯定就是使用自己编译的这个MySQL自带的mysql工具了。去basedir 的lib目录里面看了下明明存在那些*.so文件,那为什么会提示找不到呢?这个可能是编译的问题了吧(自己
2012-08-30 23:04:43 3136
原创 预分配mysql binlog文件存储空间有可能较大幅度提升性能
最近已经看到两篇文章说通过预分配mysql binlog文件存储空间(类似于innodb redo log一样)可能比较大幅度的提升性能。而提升性能最本质的原因在于:在linux中覆盖写(overwriting)比附加写(appending)速度要快很多。记录一下,说不定哪天在某个版本里面就被改进了。详情见:1. WL http://dev.mysql.com/wor
2012-08-29 20:29:38 1591
原创 MySQL对性能较为强劲的服务器利用率测试
前面一篇文章记录的MySQL 5.5对多核cpu的利用率,点击这里。其实当初测试的主要目的是今天所说的:一台性能较强劲的服务器,跑多个实例对整机的利用率大概会怎么样呢? 测试的机器是DELL R720XD,24核cpu,96G内存,挂了24个SAS盘。测试之前对这24个盘做了2个raid10盘阵,然后对每个raid10盘阵利用GPT做6个逻辑分区,然后做了ext3文件系统。测试工
2012-08-22 22:26:10 2097 1
原创 MySQL5.5对多核CPU的支持
今天测试一台机器能大概支撑多少MySQL实例的时候,意外的发现原来MySQL 5.5对多核的支持也相当不错,以前不是到处说MySQL一个很大的缺陷就是不能很好的利用好CPU么?看来MySQL 5.5还是不错的,测试工具是sysbench,test-mode=oltp,每个实例的buffer=12G,sysbench生成的数据36G左右,buffer占数据的1/3。当然测试的机器也不赖:DELL R
2012-08-16 22:35:13 6561 3
原创 服务器IO性能测试[2]--RAID10结果分析
延续前面的服务器IO性能测试,因为之前的测试结果一直不是很理想:24块SAS盘做24个raid0测出来的随机写波动相当大。读则比较稳定,在利用orion测试过程中随着磁盘数目的增加,iops基本上呈线性增长。接下来又测了raid1,24块SAS盘组成12个raid1,然后继续用orion测随机读写,这次结果基本上与上次raid0相似,不同点在于随机写的波动较raid0较小。这里我就有一个疑问了,一
2012-08-08 22:28:29 2593
原创 bash shell获取进程的pid
前几天在写一个脚本时在获取进程的pid时出现了一点点意外,当时的情境大概是这样的:跑一个任务A,然后任务B要监控A的状态,一旦A结束,B也要结束。当初第一反应就是获取B的pid然后判断A是否在运行,如果没有则kill掉B。可是当初就是不成功(用的是 $!),于是迫于任务紧急换了一种笨方法:让B的运行时间稍长于A任务(A任务的时间可以估算出来),于是就这样傻缺的开始了这个任务。 今天
2012-07-30 21:55:06 7220
原创 bash shell之数组使用
这次写脚本时用到了bash shell数组,当初做法是配置文件里面写成数组形式A=(element1 element2 element3 .... element4),然后一个脚本读取这个配置文件,于是稍微总结了一下数组的使用方法:Bash shell中使用数组变量 , 其赋值/定义有两种 :1. name=(value1 ... valuen) 此时下标从0开始,也可以这样做
2012-07-25 21:05:49 11641 1
原创 dd: opening `/dev/zero': Invalid argument的错误原因
又是一个小记录: 今天跑脚本时发现运行报错,出错代码是这样的:(time dd iflag=direct,nonblock if=/dev/zero of=/dev/"$i" bs="$size"k count=`expr 140000000 / "$size"`) 2>> "$disks"_"$size"_w_"$k" & 。 之前还死活没找到原因,后来突然发现,我这明明是测的写,为什么要用一
2012-07-24 23:02:33 4683
原创 cron -e无法退出的解决办法
今天晚上一个脚本不好写(是基本功不扎实),然后又不想浪费睡眠时间的8-9个小时,于是想到了cron定时任务,结果cron -e后死无法保存退出,从网上找了原因,好像是cron -e默认是用一个其他风格的编辑器打开的,因此不用使用vi的习惯。 但是有一种方法可以让cron -e使用vi编辑器,方法是: export EDITOR=vi,我猜想那cron -e在工作的时候肯定也是有一个判定条件 if
2012-07-24 01:15:45 3643
原创 服务器IO性能测试的笔记[一]
这今天一直在测一台新机器的存储性能以便为接下来的一个大项目的存储机选型。因为自己刚进入这个行业,对很多的东西都没经验,测试过程也是磕磕绊绊,但好在有同事的帮助,现在对这次测试做一个中途总结。 测试步骤神马的就不说了,测试目标主要是IOPS/bandwidth/响应时间等等一些,在做了raid的情况下磁盘个数由少到多的情况下,IOPS是不是呈线性增长。另外还有一个很重的测试:IO是
2012-07-21 16:49:19 3256
原创 浅谈linux的inode
linux中inode是个什么概念呢?简单的说inode是一个不能重复的标号一样,每个文件或目录对应一个inode值,那个inode包含哪些部分,有什么作用呢?这里拿ext3文件系统的inode数据结构来说:struct ext3_inode { __u16 i_mode; /* File mode */ __u16 i_uid; /* Low 16 bits of Ow
2012-05-04 19:15:45 5073
原创 Linux命令find -perm使用方法
花了点时间才将linux中find命令的-perm参数弄懂,分享一下。find -perm,根据文件的权限来查找文件,有三种形式:find -perm modefind -perm -modefind -perm +mode那么这三者之间有什么区别呢?解释之前首先得简单说一下linux中文件权限位的概念。在linux中文件或目录有三者权限r,w,x,代表的含义分别是读、
2012-05-02 17:03:44 12148
原创 Linux sudo命令与其配置文件/etc/sudoers
对linux有一定了解的人多少也会知道点关于sudo命令。sudo命令核心思想是权限的赋予 ,即某个命令的所属用户不是你自己,而你却有权限执行它。但是我们需要注意的是,虽然你有权限执行这个命令,但是在执行的时候却仍是以这个命令本身所属用户来完成的[注释1]。(su命令类似sudo命令,但是两者的差别在于前者su是一个粗粒度权限赋予,对su最好的理解我觉得是change user running
2012-05-01 23:54:05 12516
原创 Linux的man那点事
用过linux的朋友估计没有谁不熟悉man命令,大家都知道利用它可以查看到linux绝大部分命令的使用方法(但不是全部),除了这个你还了解它什么呢?其实了解man可以查看其它命令的使用方法就掌握了它的核心,但是最近看书的时候又找到了它的一点其他信息。哈哈,你就将这篇文章当做扯谈吧!~1. man其实是manual的缩写(不会很多人认为它是"男人"吧),表示手册、指南的意思。2. 其
2012-04-27 20:13:31 1023
原创 Linux系统控制文件 /etc/sysctl.conf
/etc/sysctl.conf这个目录主要是配置一些系统信息,而且它的内容全部是对应于/proc/sys/这个目录的子目录及文件。这样或许你不理解,先看看我的系统/etc/sysctl.conf这个文件里面有什么内容:cat /etc/sysctl.conffs.file-max = 3145728fs.suid_dumpable = 1kernel.core_uses_pid
2012-04-18 17:05:14 9250
原创 Linux下防止进程使用swap及防止OOM机制导致进程被kill掉
首先解释两个概念:swap:在linux里面,当物理内存不够用了,而又有新的程序请求分配内存,那么linux就会选择将其他程序暂时不用的数据交换到物理磁盘上(swap out),等程序要用的时候再读进来(swap in)。这样做的坏处显而易见,swap in/swap out这里的代价比较大,相比数据一直放在内存里面,多了读磁盘的操作,而磁盘IO代价。。大家都懂的。OOM:out of m
2012-04-17 19:19:06 6752
原创 Linux资源使用配置文件 /etc/security/limits.conf
这个文件主要是用来限制用户对系统资源的使用,具体的使用方法 man 5 limits.conf,里面便给出了详细的用法user@db-2:~$ cat /etc/security/limits.conf # /etc/security/limits.conf##Each line describes a limit for a user in the form:##
2012-04-17 12:07:16 3031
原创 [网络相关]/etc/host.conf & /etc/hosts/ & /etc/resolv.conf等等
买了本自己一直期望的书《Linux系统架构与目录解析》,其实想要这样一本书很久了。虽然不是一个sa,但是也想对linux做到应用方面的熟练,而对linux整体把握,甚至细到有哪些目录,哪些文件,这些文件是做什么用的,我想做到这些应该能水平提升不少。初步浏览了这本书,正如作者所说这本书书更像是工具书,适合查阅,而不是通篇读。又正如有人评论这本书,感觉正入境了,作者却停止了他的思绪---讲
2012-04-16 23:49:34 4903
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人