- 博客(18)
- 收藏
- 关注
mysql set global read_only操作
最近了解mysql MDL的设计。发现mysql "set global read_only=on/off"操作也依赖metadata lock(5.6.16, 推测是从5.5引入metadata lock后就这样了,没有查看更早版本的代码确认)。下面是set global read_only=on/off的实现。 调用路径如下: #0 fix_read_on...
2014-12-02 15:43:42 1034
原创 mysql flush logs
最近遇到一台mysql机器,空间不足,查看后发现是slow log文件占了大量空间(ext4),果断rm掉,然后再flush logs。flush logs的时候发现mysql会hang住。翻了一下flush logs的逻辑,执行flush logs的时候,mysql会执行reopen_file操作,reopen_file()先closeslow log file,再open,...
2014-05-11 21:23:46 771
原创 关闭mysql的几种方式和区别
关闭mysql的方式大致有下面几种: kill `pidof mysqld` kill -9 `pidof mysqld` mysqladmin -uroot shutdown 其中kill `pidof mysqld`是通过信号量SIGTERM(15),结束进程,这个同mysqladmin -uroot shutdown的方...
2013-09-04 18:58:00 555
原创 mysql slave 备库延迟是怎么得到的
在mysql的备库的监控中有一项很重要的指标:Seconds_Behind_Master,这个值是怎么得到的呢?下面从5.1.58的代码中分析一下: mysql的replication中有2个比较重要的class:Master_info(rpl_mi.h), Relay_log_info(rpl_rli.h),他们分别对应于master,info文件和slave.info文件...
2013-07-28 14:43:41 337
原创 mysql expire_logs_days是怎么生效的
mysql主备复制是通过binlog完成的。在开启binlog的情况下,expire_logs_days参数可以让mysql自动清理若干天前的binlog。那么expire_logs_days是在什么时候生效的呢?初步猜想实在每次产生一个新的binlog的时候去判断一次。查了一下具体的实现,确实是这样的:(5.1.58, log.cc)int MYSQL_BIN_LOG::r...
2013-07-07 15:33:05 1185
原创 mysql my.cnf文件的option
mysql的配置文件my.cnf里是由一个个的option组成的([***])。各个部分的作用大致如下:[client] -- 这部分的配置是mysql自带的client回去读取的部分,可以配置port/password/socket等port=3306socket=/tmp/mysql.sock[mysql] -- 这部分配置mysql command tool...
2013-07-06 14:41:25 126
原创 mysql compound in 查询
mysql可以使用row constructor来做compound in 查询:select * from t where (col1,col2) in ((colt1,colt2),(colt11,colt22)).这种查询在批量查询的时候就会显得比较方便:业务上可以批量操作,提高效率。但是explain之后却发现,这种sql却使用了全表扫描。 首先看一下...
2013-07-03 21:41:33 133
原创 mysql create table
粗略了解mysql create table的过程:create table的调用路径如下(5.1.58):do_command(sql_parse.cc)->dispatch_command(sql_parse.cc) ->mysql_parse(sql_parse.cc) ->mysql_execute_command(sq...
2013-06-23 13:00:51 209
原创 innodb main thread 处于 doing background drop table状态?
一直好奇innodb main thread的thread state。最近偶然发现没有ddl操作的时候,show engine innodb status时,main thread处于"doing background drop tables",就顺便了解了一下有关 innodb main thread状态的一些处理逻辑。主要的处理逻辑在srv/srv0srv.c文件里。...
2013-06-21 21:26:53 217
原创 mysql drop table过程
最近做drop table操作,24G的sas机器,ibd文件17G,大约需要14S,在此期间mysql(5.1.48)基本hang住。详细了解了一下mysql drop table过程,发现是mysql drop table的逻辑引起,主要有2方面的原因:drop table过程会持有buffer pool mutex,做2次遍历--对于大内存的mysql服务器,会导致mysq...
2013-06-17 20:08:29 608
mysql 数字类型
最近看myssql的浮点类型,对mysql数据类型中的的数字类型做个小结: tinyint/int/bigint,整型的最容易理解和使用,实际使用的时候整型用的也是最多的。知道有符号/无符号,tinyint 1个字节,int 4个字节,bigint 8个字节就可以了,没有其它可以纠结的,略微值得一提的是mysql的bool类型实际也是tinyint类型的,create...
2013-06-12 16:41:21 171
原创 mysql use db 后很卡
平时自己使用的一台mysql,use db之后,总是感觉很卡,按完回车要快1s才能返回。觉得有什么蹊跷,就打开了general log,发现简单的use test,mysql实际执行了很多内容:130603 16:02:11 2 Query SELECT DATABASE() 2 Init DB test ...
2013-06-03 19:46:48 337
原创 innodb表空间的浪费
innodb表空间的浪费http://bugs.mysql.com/bug.php?id=68023http://bugs.mysql.com/bug.php?id=67963
2013-05-17 09:40:20 110
原创 mysql kill不生效?
生产环境出现过多次mysql hang住,写操作的sql堵住的情况,这个时候使用kill来kill所有的连接,但是大部分时候连接kill 后处于freeing item状态,kill在这种场景下基本无效。 查看官方文档(以下大致翻译):(http://dev.mysql.com/doc/refman/5.5/en/kill.html) kill执行...
2013-05-06 16:24:43 1408
原创 alter ignore table 添加unique key不生效的问题和临时解决方案
遇到一个需求,已有的一个表,需要把已有的一个普通索引变成唯一索引,表数据量大约在百万级别,duplicate的量大约在几K左右。想到了使用alter ignore table (http://dev.mysql.com/doc/refman/5.5/en/alter-table.html),于是便找了一个测试库,发现依旧报uk冲突: root@test 12:55:26>...
2013-01-05 15:17:52 371
原创 mysql innodb_open_files设置过大导致的问题
今天上午不断的接到开发同学的反馈,测试环境的一台mysql(5.1.48),对应的应用总是不断的报连接数拿不到。登陆到机器后发现mysql -uroot连接不上,而netstat -nal |grep 3306|wc -l也只有1200个,而这台机器设置的max_connections=5000,max_user_connections=0,innodb_open_files=60000。 ...
2012-12-03 20:35:17 4223
原创 mysql备份出现swap问题
最近一台mysql机器晚上备份的时候总是出现swap告警,网上搜了一下mysql + swap 出了一堆结果。解决方案大致有这么一些:1、修改swappiness的值,设为0;2、mysql使用huge page。 在我自己遇到的问题里,出现swap是因为swappiness设置为60导致的:/etc/sysctl.conf里swappiness为0,/proc/sys/vm/sw...
2012-09-21 15:40:51 147
原创 mysql kill 指定用户的连接
昨天有个需求,需要kill掉aa用户建立的连接。第一个感觉是用老土的mysqladmin+grep完成: for id in `mysqladmin -uroot processlist | grep "aa" | awk '{print $2}' `doecho $idmysqladmin -uroot kill $idsleep 1done 这样很容易kil...
2012-09-06 19:43:36 408
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人