随笔分类 -  MySQL

摘要:最近连续经历了机架掉电和交换机挂掉,着实切了不少主库,虽然过程心惊胆跳,但是也算是上过战场,经过了实战演习,相信TEAM中的小伙伴们对于切主库已经可以驾轻就熟了。 MySQL的主库切换也属于DBA的一个基本技能,下面我们就来聊聊MySQL主库切换那些事。正常切主库 首先我们说说正常情况下的主库切换,在这种情况下,我们有时间可以做计划慢慢进行切换,所以这种切换其实时流程化的操作。 我们先说一下技术层面的步骤: 1、挑选一台服务器作为新主库 可以是现有的slave,也可以是新扩容出来的slave,但是归根结底它的角色是slave 2、在new master上设置log-slave-... 阅读全文
posted @ 2013-12-10 19:13 billy鹏 阅读(4438) 评论(1) 推荐(0)
摘要:正休息的时候一个电话将我的睡意完全打散,“开发童鞋写update SQL的时候忘了加where条件了”,相信每一个DBA同学听到这个消息的时候都有骂街的冲动吧。万幸只是单表写花了,而不是哪位大神在DB里面drop table玩。虽然已经很久没进行单表恢复了,但是还好步骤都印在脑海中,没有出问题的就恢复完了。 言归正传,记录一下单表恢复的步骤和关键点,提醒自己也提醒大家。第一步: 找一台性能比较高的服务器作为还原机,从备份池中将最近的一次备份恢复到这台还原机上。当然这个前提是你有备份,且备份是可用的。(什么? 你告诉我没有做备份,那么同学你可以洗洗睡了,准备享受自由的空气吧。) 注意:... 阅读全文
posted @ 2013-12-06 01:35 billy鹏 阅读(23875) 评论(2) 推荐(2)
摘要:最近经历了一次MyISAM重启的血泪教训,小小的故障历经3个小时才全部解决完毕,特此铭记一下,以后坚决防止在同一个地方跌倒两次。事情的过程: 某日早7点接到几条主库报警,给值班组打电话后得到的消息是有一台交换机重启了。so,第一反应,这种情况不用处理过会就好了。(后来才知道,这是条虚假消息,没有上去验证是一个巨大的错误,代价惨重。) 等到了8点,依然收到报警,并且有越来越多的趋势。赶紧实际登陆服务器验证,发现服务器被重启了,上面的MySQL实例被意外shutdown。这时候从工作群中知道好几台同机房的服务器都出现相同情况,第一反应,一个机架掉电了。于是就赶紧重启吧,重启好了就奖从库都c... 阅读全文
posted @ 2013-12-02 20:07 billy鹏 阅读(699) 评论(0) 推荐(0)
摘要:最近遇到一条SQL线上执行超过5s,这显然无法忍受了,必须要优化了。 首先看眼库表结构和SQL语句。CREATE TABLE `xxxxx` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `owner` bigint(20) NOT NULL, `publicStatus` int(11) NOT NULL DEFAULT '0', `title` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `type 阅读全文
posted @ 2013-11-20 15:06 billy鹏 阅读(6066) 评论(0) 推荐(1)
摘要:对于越来越多的数据,数据库的容量越来越大,压缩也就越来越常见了。在我的实际工作中进行过多次压缩工作,也遇到多次问题,在此和大家分享一下。首先,我们先说说怎么使用innodb的压缩.第一,mysql的版本需要大于5.5第二,设置innodb_file_format=barracuda第三,create table或者alter talble 增加 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;(默认的key_block_size=16)其实很简单,根据经验,一般压缩比例可以达到30%-40%然后,我们说说我在压缩过程中遇到的坑和发现的关联,当然有些比较二。No1: 阅读全文
posted @ 2013-09-27 16:26 billy鹏 阅读(18888) 评论(1) 推荐(3)
摘要:最近遇到非常多的导数据的需求(主要是CSV的需求),专门对mysqldump、pt-archive、mydumper做了一下对别,粗浅研究,以备将来使用。msqldumppt-archivemydumper本地导成SQL格式OXO本地导成CSV格式OOX远程导出SQL格式OXO远程导出CSV格式XOX自定义分隔符OXXSQL导出速度快快快CSV导出速度快很慢较快多表导出是否支持并发XXO是否支持表对表导入导出OOX是否支持条件导出OOX备份binlogXXO归档XOX还有许多需要研究的地方,后期再去研究一下sqoop。 阅读全文
posted @ 2013-09-11 23:10 billy鹏 阅读(734) 评论(0) 推荐(0)
摘要:最近遇到很多业务需求,需要进行数据导出工作,由于有格式要求,故之前一直使用mysqldump的方法。mysqldump -uuser -ppassword -S mysql.sock -t db table -T /data1/dbatemp/ 当然可以根据需求增加分隔符和行结束符。--fields-terminated-by和--lines-terminated-by,其他也可以增加where条件进行检索,可以自行使用--help查询。 但是后续由于业务需求比较频发,同事需求数据容量越来越大,已经不适合在localhost进行操作,需要一台中心管理机来统一进行管理,这时候mysqld... 阅读全文
posted @ 2013-09-10 15:20 billy鹏 阅读(3857) 评论(0) 推荐(0)
摘要:最近一周接连处理了2个由于int向varchar转换无法使用索引,从而引发的慢查询。CREATE TABLE `appstat_day_prototype_201305` ( `day_key` date NOT NULL DEFAULT '1900-01-01', `appkey` varchar(20) NOT NULL DEFAULT '', `user_total` bigint(20) NOT NULL DEFAULT '0', `user_activity` bigint(20) NOT NULL DEFAULT '0' 阅读全文
posted @ 2013-05-31 11:18 billy鹏 阅读(7971) 评论(0) 推荐(2)
摘要:最近新上了一批服务器,内核升级到了2.6.32版本,部署完MySQL实例后上到线上,直接负载冲到15,cpu使用达到700%。01:20:01 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-1503:50:01 PM 34 1506 22.95 18.11 11.7801:20:01 PM CPU %user %nice %system %iowait %steal %idle03:50:01 PM all 95.13 0... 阅读全文
posted @ 2013-04-03 15:46 billy鹏 阅读(10712) 评论(0) 推荐(0)
摘要:近期发现管理的一些MySQL实例偶发会出现连接数飙高,响应时间增长,负载上升等问题,但是业务又没有任何的波动,经过一定的排查发现是query cache lock导致。问题表现:419 State: Waiting for query cache lock 4 State: statistics 2 State: storing result in query cache 2 State: Sending data 1 State: Waiting for master to send event关闭query cache 后:1067 State: 1 State: ... 阅读全文
posted @ 2013-04-03 15:12 billy鹏 阅读(3176) 评论(0) 推荐(0)
摘要:近日工作中发现负责的业务有个slave出现大量延迟,latency > 2000。第一次排查的时候发现有备份程序再执行,故草率判定为备份产生的IO压力导致,没有处理。但是经过2个小时候发现延迟还在增大,登陆服务器查看备份程序员已经完成,但是延迟并没有解决,查看基础信息如下:----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--usr sys idl wai hiq siq| read writ| recv send| in out | int csw 1 1 92 6 0 ... 阅读全文
posted @ 2013-02-07 14:53 billy鹏 阅读(1465) 评论(0) 推荐(0)
摘要:date在linux下是一个很好用的时间函数,有很多好用的方法比如:date -d'+1 day' +%Y%m%d我们可以很方便的计算n天,n月,n年之后的日期,但是最近在工作中遇到一个陷阱,发现date一个不准的地方,提醒大家使用的时候重要,不要那么相信date算出来的时间就是对的。我们的场景是要计算下个月的月份,但是发现在1月31日的时候使用“date -d'+1 month' +%Y%m”得到的不是2月而是3月。具体可以看下面的例子:ps:所有测试都是在1月31日这个前提下。[root@hebe210 ~]# date +%Y%m%d20130131[ro 阅读全文
posted @ 2013-01-31 11:40 billy鹏 阅读(1837) 评论(1) 推荐(0)
摘要:最近工作中频繁遇到swap引发的问题,记得曾经读过当内存比较大的时候可以将swappiness调整成0。下面整理一下swappiness相关的知识。1、什么是swapSwap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。2、swappiness干什么用swappiness是控制系统使用swap分区的频率阀值,当sw 阅读全文
posted @ 2013-01-25 18:35 billy鹏 阅读(1537) 评论(0) 推荐(0)
摘要:中午和同事讨论truncate到底会不会释放资源,大部分都认为会,但是其实具体情况是和MySQL的版本有关。before 5.0.3truncate是delete rows one by one。between 5.0.3 and 5.0.8当有外键的时候还是delete rows one by on,但是当没有外键的时候会采用drop and re-create的方式来操作。(并且,这个时候AUTO_INCREMENT的计数器会在truncate的时候置零。)after 5.0.85.0.8之后在truncate的时候会增加implicit commit,增加事务的安全性。但是操作模式和之前 阅读全文
posted @ 2013-01-23 16:32 billy鹏 阅读(353) 评论(0) 推荐(0)
摘要:最近在工作中遇到很多使用MySQL自带的autoincrement函数作为发号器,在实际使用中当并发比较小的时候还没有问题,一旦并发增加就会出现很多问题,特此进行如下总结。一、自增配置通过如下建表语句就可以完成自增的配置CREATE TABLE `test_inc` (`id` int(11) NOT NULL AUTO_INCREMENT,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;二、修改自增大小通过如下sql可以自动生成数字:insert into test_inc values();当增加3行后表中数据如下:+----+ 阅读全文
posted @ 2013-01-22 17:20 billy鹏 阅读(8493) 评论(1) 推荐(1)