月份:2017年10月


18岁,18岁我参加了革命游击队


本文为15期学生所写,年龄很小,初中没有毕业就开始打工,经历有些坎坷,但最终还是成功迈入运维领域。

说一下我自己的心得 说的不好的还望见谅毕竟我只是个孩子,没啥知识文化文采不够,专业技术也很差。

我是初中都没有毕业,就出来打工了,没有专业知识,没有学历,没有背景。 立足社会必定要有手艺,而且我体质比较弱,也不会和人沟通。这个时候就想去学一个技术。

从阿铭linux第四期我就开始关注阿铭老师了,应该是两年前左右的时候,阿铭老师公布了两套课程,一个是aminglinux第三期和第一期,(阿铭大礼包)那两套课程我都看完了也做了相关的实验,也学习到了很多知识。看了论坛里很多前几期励志的故事,备受鼓舞,就信心满满的去找工作了,以为5,6k的工作很容易找到,当时自己真的是太年轻。面试打击很大,毕竟自己只是自学,掌握的知识点还不够全面,所幸的是有个搞idc的公司要我,他说你这个水平只能给你 2000,补贴700。好吧,暂时先干着。

那天看到群里一个段子 :低于四千的工作不是都应该这样吗?这个你觉得可以吗? 我觉得可以?好,明天你来上班吧。这个时候很多人都笑笑了,我却是笑不出来的。

2,3k在北京你们觉得可以生存吗?我可以,每天吃馒头,和白开水,各种省钱,在很偏痹的地方,北京,找到了500的房子,每天4个小时上班,4个小时回家,幸亏干的是idc,上一天休息三天。

那个时候就和阿铭老师聊过, 阿铭老师说方向对了,什么都没错。(不知道明哥是否还记得这句话)。

干了一段时间我觉得idc没啥前途,而且这个时候我也看了不少linux运维方面的免费视频,课程我都看完了,实验也做了,不懂得地方就去官方群里问,或者问问同事。受到了很多嘲讽,打击。但是这些都是我成长的因素。

这个时候也被好工作了冲昏了头脑,网络上有一个渗透工程师,说只要9个星期就可以入职,然后还有推荐工作,他们的学员都在腾讯,阿里,新浪,国家电网,爱奇艺,土豆等。然而天上是不会掉馅饼的,他们根本就没有在乎我有没有基础,能不能学会,就是一阵忽悠然后收钱,(对于2700的工资来说,1800的学费还是非常贵了因为那是我三个月才能攒下的钱)。

那个时候真是图样图森破,然后我就去学习渗透测试了, 毕竟自己基础比较薄弱,这个培训时间很短,在这里我虽然学的不精,但也学到了很多东西,php和java代码,还认识了很多程序员。然后我就把idc工作辞职了。 去找安全的工作。这个时候有个公司叫X租宝,没错就是X租宝,骗了几百个亿的。当时我就去上班了干的是实习生,4000多,没过多久公司出事,(老天还真是关注我啊)工作又吹了。

然后我继续去找安全的工作,工资都比较低,不然就是不要,我没存款工资,在北京能活多久你们懂的,然后我就回家了。我家庭条件也不是很好。给我的负担很重。当时我在家里学习。

这个时候家里的压力比较大,我妈妈做手术和一些其他的事情,家欠了一直都欠人家钱,(这也是我初中毕业就出来打工的一个原因)我爸为了让我去上班,天天说我是个废物,垃圾,之类的话,我当时火气很大,把他的一个小摊位上的东西都砸了,我说我小时候在家里你就在北京不管我。我就知道我懂事了以后喜欢的东西就没买过,学习资料你都不舍得给我买,人家都有零花钱,我买个书,都要好几个早上不吃饭,我的手机都是二手店人家不要的,你说你是我父亲,你尽到了父亲的责任么,给了我什么,就是想每个月交给你几百块钱么。

那段时间他就消停了一段时间,过了一段时间又开始bb,这个时候我就去找朋友,希望能借助一段时间然我学习,找工作。结果,你有困难,不开口我们还是好朋友,开口了朋友都做不成。

当时找工作不好找都是年底的,当时我就在想,我做的错了么,事哪里错了,怎么现在混的这么惨。我只能用天将降大任于斯人也,假如生活欺骗了你,不要怪天,不要怪低,要怪就怪你自己。

上天夺走你的一切,只是为了给你更好的,我做的一切都没有错。这个时候有家公司要我了,看我linux基础不错,对安全也熟悉我就去上班了。工资是7000,职位是监控,每个月到手里5500。这笔钱我叫给我家里2000-3000。父母生我们下来,不就是希望我们养他们老么,这是最基本的孝道吧,剩下的钱就用来学习。

这个时候阿铭linux也到15期了,猿课出来我就在关注,我觉得效果会不会没有直播好,
后来觉得反正观察好几年了,自己也有基础,报名吧。闲钱用来报名一下。这个时候我的手机还是那个二手的,后来在国企这个大公司我真的觉得过不去啊,好多人都说很烂,你换一个吧,确实很烂 啊,下载qq和微信就很卡了, 只是qq还不卡。然后我就换了一个1000多的手机,没办法,家里的钱要还。

阿铭linux学习氛围真是太好啦,阿铭老师也是一个有技术的老师,有问必答,不想之前渗透测试班的,说这个是触犯法律这个那个,群里很多大神啊,吕哥,文哥,都是老司机,还有很多大神,给了我很多帮助,一起学习,一起进步。

积累了很多东西 ,(积累)群里的兄弟们很多都找到工作了。希望大家年薪超过10W。当然也有海没找到工作的,希望你们加油,一起努力。自助者,天助之, 当你想干一件事的时候,上天都会帮你。

最近呢,换了一份工作 ,哈哈,我真实年龄才18岁,当然为了找到这份工作学历和年龄都有所隐瞒。这份工作每月薪资+绩效算是过万了,系统运维,嘻嘻。我只是个孩子察言观色都不会,图样图森破,我真不是炫耀什么。只是分享。

吹了这么久的牛逼,论坛的面试题真的给了我很大帮忙,你们面试前一定要做好工作,论坛的面试题,刷下来面试题就没有问题,看一下有没有去过的师兄问一问。

问题方面lamp、lnmp、启动流程,负载(w,vmstat,top,ps), 流量(iftop,nethogs,sar )计划任务,监控软件(zabbix,cacit,ngios)apache工作模式, php-fpm,nginx反向代理, nginx很重要,mysql主从,主主, 还有lvs,ha, apache访问日志,nginx访问日志。

什么云计算,自动化运维,haoop,nosql,docker,我都吹出去了。

离职原因, 我说领导经常摔锅,(这是是真的,空降了一个主管,太会摔锅了,他来了以后,两个网络工程师走了,系统运维走光了,现在监控的小伙伴们也离职了三个,办离职的时候,人事还说,运维部门的人怎么都离职啊?最近找的人太多了吧)哈哈我真是很珍惜机会,工作毕竟只有十八岁,但是他来了以后,上班就是挨骂,这个没做好,(有些事没做好,有些事真是欲加之罪)。而且天天扣工资、、我要离职还拖了我一个月,他们直接请假,出于责任和前领导的知遇之恩,我还是等到了后面的人来交接工作的。)

好啦 以后还要向大家多多学习,不光是技术,还有社会经验。路虽远行则将至,事虽难做者必成。 我在路上~~

apache rewrite死循环的问题


需求背景是: 把所有请求都转发到/111/目录下面,比如当访问 www.aminglinux.com/1.html时,应该跳转到www.aminglinux.com/111/1.html

核心配置语句是

RwriteRule ^(.*)$  /111/$1 [R,L]

使用curl测试,没有问题,但是使用浏览器访问时,出现了无限循环。
本来访问的是www.aminglinux.com/1.html时,结果变成了www.aminglinux.com/111/111/111/111/…..

解决该问题的方法是,加一个条件

RewriteCond   %{REQUEST_URI} !^/111

RewriteRule ^(.*) /111/$1 [R,L]

这个世界上肯定有另一个我


作者:18期-小文子

说明:此文略长,非喜勿喷。里面的面试问题,很有价值,值得一看。

我这人平时很沉默,但是一打开话匣子,没完没了,想说的也不是很多,想到哪写到哪吧。 我平时喜欢旅行,喜欢骑着单车,用一天的时间来一个200公里的骑行,虽然跑的不远,但是我沉醉路上的感觉,沉醉在路上的风景,学习也是这样,在路上贪婪的呼吸新鲜空气,没有终点。

自15年4月份在上上个公司,一个新成立的公司,我以网管的身份进入,这个公司是做彩票业务的,机房和门头都是我和那个市场还包括我的主管弄起来的,因为这个公司的业务是跑在red hat 6.5上面的,所以我第一次接触linux,主管让我学习linux,当时真是一脸懵逼。

一次偶然的机会,我在网上看到“阿铭linux”,15年的时候学费好像是3580,当时也是不敢相信,怕是遇到骗子,因为要报这样的培训班市面上至少得1W5吧,这些钱对我来说也是笔巨款,现在经历了一年才象征性的涨了200块,铭哥也是为了我们这些穷苦学员着想,当然这些都是后话了。

我从网上花了49买了一本书,是那本《跟阿铭学linux》绿色皮的那本,大家应该都知道,从这本书开始了我的linux自学之路,是那种“无拘无束”的自学之路,不知道做笔记,即使做了笔记,也不知道哪些是重点,就这样吊儿郎当的走向了最底层的运维之路,说是运维,就是协助开发做一些很基础的工作,比如远程无法更新系统,就让我进机房在服务器上更新,服务器宕掉了,就让我去拷贝log。

自学了一段时间,到了shell那部分看不懂了,想起了铭哥的那个学习网站,注册了一个试听帐号,听了两节试听课,也没当回事,所以就买了两本关于shell入门的书籍,买来之后真是痛哭无泪啊,对于我来说完全是在看天书。

到了15年11月23日,公司发生了变故,总集团想要抢走我们这边投资人的子公司,对于利益的事,说翻脸就翻脸,刚成立一年半的公司就这么倒了,没有给我们员工任何交代,当时也处于感情在里面,毕竟这个公司是我们几个辛辛苦苦搞起来的,还抱有一丝的希望,所以就傻傻的等了四个月,过年没有工资,没有福利….

真苦逼,我的主管对我很照顾,虽然公司倒了,但是现在仍有联系。16年3月决定辞职,3月31号写了辞职报告,不知道公司现在怎么样了,4月25日,我到了上一家公司,做实施工程师,就是给客户安装设备,我原来呆的公司都是领导之间耍心眼子,这公司同事之间耍,有意思吗?有意思吗?

7月12号(2016年),我决定报“阿铭linuix”了,决定走向真正的运维之路,哈,说也奇怪,我的运维之路总是那么的曲折,我在公司看教材,主管看不下去,把我叫到会议室和我谈话,问我有什么想法,我说没有,之后我在公司偶尔看教材,总有那么让人烦的同事,把我这事捅给主管了,主管又找我谈话,我直接对他说我学习是我的权利,没有影响公司的业务,没有说让我出差我拒绝,又不是你给我发工资,我和主管产生了隔阂。

8月13日,周六上班,没事干,我又作死拿出教材来看了,不巧又被主管看到了,谈话呗,当时我已经有了走的打算了,只是想学完直接辞职的,那天我跟他说你要是看我不顺眼,我可以现在辞职,我没必要跟你在这较劲,你就比我大一岁,当个主管,自己团队都管不好,十个人能分两派去,有六个人在那混日子的,他们随是老员工,在那打游戏,我有我自己的目标,路不同不相谋。16号我辞职了,现在想想也挺后悔的,如果当时忍忍就能撑到我把课程学完了。

说说我这几次的面试经历吧,也没面试多少个,但每个公司有每个公司的特点,我就说两个印象最深的吧。

第一个是给浪潮做业务的,很多关于硬件方面的问题,比如:

1.如果强电和弱电必须要交叉走线,并且必须接触,你会怎么办?(应该是包裹屏蔽锡纸吧)

2.一台服务器可以接几台存储?

3.你最多上架过多少台服务器?(不是说软件部署,而是硬件搭建方面的)

4.你原来公司使用的是什么品牌的空调?(我以前接触的是艾默生的,机房专用的,小公司真的买不起这货…不知道大家知道不知道?)

5.你原来公司的机房面积有多大?多少个机柜?机柜是几U的?(不问你有多少台服务器,真阴!!这个不能乱蒙,能推算出有多少台服务器的,哈哈)

6.有UPS吗?功率是多大的?(我说的是10K的,16块电池,能撑个三个半小时左右{3台服务器、一台存储、两台防火墙、一台路由器、两台交换机、还有监控录像机啥的},这个也能推算出多少服务器吧,机房不可能没有UPS的) 啊,剩下的都是些mysql的问题了。

第二家是做网站的,给我说他公司有40台服务器,每天的访问量能达到500万uv,多少有吹牛的成分…每天被各种IP攻击,而且都是国外的IP。提问:

1.如果被Ddos攻击了会怎么做?(铭哥讲过这个问题)

2.你以前都做过哪些架构部署?

3.你为什么会做linux运维?

4.关于LVS你知道它的原理吗?(当时想成HA热备了….)

5.系统监控你都遇到过哪些问题?

6.你知道我们公司原来的那个运维写了个脚本,可以直接检测上线系统的BUG,反馈到开发,让开发改代码吗?(我上哪知道去!!!)

7.我们这有40台服务器,让你一个人管理,你能胜任吗?如何胜任?( – ,-)
算了,还是找下家吧,以我现在学的东西,如果真来了这个公司,就只剩下删库跑路了

好了,时间不早了,该休息了,继续我的旅途吧,加油!!!也祝大家旅途愉快,不要半路下车噢

后记:功夫不负有心人,小文子同学在8月底(2016年)拿到了一份入职offer。

shell习题-判断cpu厂商


写一个脚本:
判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor id一行中。
如果其生产商为AuthenticAMD,就显示其为AMD公司;
如果其生产商为GenuineIntel,就显示其为Intel公司;
否则,就说其为非主流公司。

 

参考答案:

#!/bin/bash

m=`cat /proc/cpuinfo |grep vendor_id|awk  -F":" '{print $2}'|tail -1`
if [ $m == "GenuineIntel" ]
then
     echo "cpu is 英特尔"
elif [ $m == "AuthenticAMD" ]
then
     echo "cpu is AMD"
else
     echo "cpu is 非主流"
fi

shell习题-破解字符串


已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果,请破解这些字符串对应的md5sum前的RANDOM对应数字?

21029299
00205d1c
a3da1677
1f6d12dd
890684ba

解题思路:通过每次传递一个参数的方式,来实现依次破解,$RANDOM的范围为0-32767。

参考答案:

#!/bin/bash

for n in {0..32767}
do
        MD5=`echo $n | md5sum | cut -c 1-8`
        if [ "$MD5" == "$1" ];then
            echo "$n $1 "
            break
        fi
done

shell习题-监控节点


一个网站,使用了cdn,全国各地有几十个节点。需要你写一个shell脚本来监控各个节点是否正常。

假如

1 监控的url为www.aming.com/index.php

2 源站ip为88.88.88.88

 

参考答案:

#!/bin/bash

url="www.aming.com/index.php"
s_ip="88.88.88.88"
curl -x $s_ip:80 $url > /tmp/source.html 2>/dev/null

for ip in `cat /tmp/ip.txt`
do
    curl -x $ip:80 $url 2>/dev/null >/tmp/$ip.html
    [ -f /tmp/$ip.diff ] && rm -f /tmp/$ip.diff
    touch /tmp/$ip.diff
    diff /tmp/source.html /tmp/$ip.html > /tmp/$ip.diff 2>/dev/null
    n=`wc -l /tmp/$ip.diff|awk '{print $1}'`
    if [ $n -lt 0 ]
    then
        echo "node $ip sth wrong."
    fi
done

                

我的运维生涯中第一个故障处理过程


环境: kvm虚拟化,宿主机为centos6,虚拟机也为centos6,虚拟机上跑的tomcat+jdk

问题:虚拟机假死,远程连不上,服务不可用。

老大让我去找原因,刚上班几天,之前完全没经验,心里莫名的紧张,然后就去找阿铭老师求助去了。

kvm日志,发现有错误,但是信息很少,没有收获。然后继续求助。

然后把问题反馈给老大了,但是老大说ssh连不上什么原因,再去查一查。之后把虚拟机关掉两个,然后top命令查看内存,发现内存占用率在96%,而且跑了7-8个Java进程在。把这个问题反映给老大,老大说让我查查tomcat为什么会启动多个Java,正常应该是一个啊。

之后,老大把Java进程全杀掉了,重新启动了tomcat,这个时候内存占用率在20%,终于找到原因了,不是虚拟机占用的,而是tomcat的问题。然后去查tomcat启动多个Java进程的问题,结果又是毫无头绪,中间把ssh登录不上的原因查到了。

 

在/var/log/messages 日志里有一段记录进程信息的,看到sshd前边的两个值,有时候为-17 -1000, 有时候又是 0  0

然后就去查了两个值得含义,原来是类似优先级的一个东西,在内存不足的时候,按照值得大小,来一个一个杀掉,值大的就会先杀掉,在出问题的时候,刚好sshd前的值,变成了0 0 ,所以sshd在内存不足的时候,被杀掉了.

后来又去查tomcat为什么会启动多个Java进程,然后突然发现机器上又多了个Java进程,把这个情况告诉老大。结果老大说,应该不是tomcat自动启动的Java,刚刚他刚好重启了tomcat,应该是之前的tomcat关掉的时候Java进程没有结束,然后试了一下stop tomcat,结果发现,tomcat停掉了,网站不能访问了,但是Java进程还是存在。

然后就继续查tomcat为什么不能完全退出,发现了这个帖子:http://tuhaitao.iteye.com/blog/1122935

原来是开发的代码问题,按照帖子的说明,试了一下没有退出的进程,果然发现有一些ftp相关的进程没有设置成daemon,所以导致tomcat不能正常退出。

问题终于解决了,把链接发给了老大,情况说明了一下,至此我运维生涯里遇到的第一个问题算是解决了。不过老大好像有点不高兴……(ps:老大就是那个开发)

 

啥样的公司不能去


刚好3个月,今天找到工作!我是17期学员,4月12日(2016)报名猿课,今天7月12日,刚好3个月。

 

先说7月11日:

这家公司给的岗位很水,是驻场运维,负责地铁多媒体的维护和搭建,白班和夜班倒班,建议大家不要去这种的。

给了题,大多是Windows的很水的题,这对大家没什么用。面试时候什么也没看直接问的,你会什么,基本再没问,然后就是一堆他们这边项目组要干的活,罗嗦了10几分钟,薪酬4000,包住还得给一月交300床铺费,6个月试用期,我天,肯定不去。

 

头一天面试那个驻场运维之前接到一个电话,是在智联招聘网站直接搜到我的,说能否去面试, 这家公司是做气象数据的,在中国气象局楼上。没有笔试,等待上一个人面完试直接面试我,大概问我的我总结了一下。

1 自我介绍,介绍一下你会的技术;
2 查看负载用的命令;
3 查看有几个用户登录,用的命令;
4 tomcat和apache的区别,原理;
5 说一下集群,原理,模式;
6 备份用的命令;
7 用过监控吗,是什么,简单说一下;
8 接触过orcale吗;
9 学校学的专业课;
10 脚本语言会吗;
11 有自己的博客吗,说一说关于运维技术的新技术;
12 说一下主从原理(说的有点绕);
13 文件共享用到的工具有哪些,在Windows上用什么工具可以把文件共享给linux。

大概这么多,有的没接触过的,直接说我不会,诚恳一点,自信一点,没什么问题,不会很正常。问我了解python吗,我说以前看过python,之后我会入手python,最后他介绍了一下业务部分,正好会用到python,问我是否能近期到岗,人事问了我体检过没有,住的地方离这里有1个半小时,你能接受吗,我说距离不是问题。

最后感觉还行,等待通知,果然,下午还在麦当劳等朋友呢,人事电话打来,决定录用,面试的时候问道你期望的薪资是多少,我直接说8000,可能因为刚毕业,不太愿意给这么多吧,但是有一点,他问道你这些东西是怎么学的,报培训班了吗,我说全是我自己学的,网上有很多资料,文档,博客,视频,都可以学。

这样显得你自学能力很强,最后决定录用我也是应为这点,offer到手薪资是7000,其实也能接受,不过大家面试的时候能要高点就高点。这是我人生第一份正式offer呀,心里还是很激动,作为一个0基础,刚毕业的学生来说。感觉这家公司真不错。

 

下午面试,这家又是水。面试我的我都没听清他是那个部门的,兼着做运维,问的问题简直是面试销售似的,一副面试官的模样,不是很有好,技术的东西一句也没问,相当水。换做之前的我有一次可能直接受不了我就拍桌子走人,我有一个亲戚做技术高管的,也面试过数不清的人了,其实碰到水官,你可以直接拿包走人就行了,不用浪费时间,听着他给你上一堂课,没必要,不过有一点要注意,“你是怎么理解运维的”,这个好好看看资源共享那一栏有个帖子,铭哥的回复,按照那个来回答。果断这家放了。

再说说我的经验吧。

1、lamp,lnmp,一定要会,至少会搭建吧,还有原理;

2、mysql主从学学,搞懂原理;

3、集群原理,说一说你搭建过的就好,我是直接说都在虚拟机上搭建过,有记录的文档;

4、监控的话,根据自己情况而说,不一定一定要问你怎么搞,我是这样回答的,我搭建3台机器,配置过nagios监控,因为在自己学的过程中没有线上环境,所以只学会搭建;

5、在面试前一定要看《阿铭带你飞》,帮助是相当大的,正好昨晚铭哥微信回复我说看一下这个,昨晚复习到1点了。。。自己根据自己的情况准备一些话术,面试没问题。

6、论坛的东西多看看,尤其是排长经验,资源汇总,面试题这些,很有用。。。。。。。。以上就是我目前遇到的,希望对大家有用。

新的开始,又是新的挑战,想想自己3个月,不可能每天学够8小时,但每天一点点,慢慢的你会明白这个东西为什么是这样,我的能力也不是很强,以后在工作中还需加油,不骄不躁,脚踏实地,先找到工作再说后面的,不用全部学完,觉得自己可以了就去找,没什么大不了的,现在我的面试后面2天全部安排满了,有的电话打来我也推掉了。

最后,感谢铭哥,感谢17期的小伙伴们,一起成长,一起加油。

关于mysql优化的一些心得


先介绍下服务器架构及配置8核8G,10M带宽Centos6.5,64位,系统的架构为

Nginx 1.8.1,PHP  5.3.29,Mysql  5.5.42。

一电商网站后台查询订单时,经常php超时,导致php报错。以下是排查过程。

1、php执行超时,首先我们想到的就是php.ini文件中max_execution_time =  #把默认的值调大。

2、然后在后台执行订单查询php不报错了,但是查询耗时较长,用时65s。而且一些表成锁死状态碎片比较多,本人对mysql数据库优化不是很了解,于是请教了铭哥下,铭哥给出的答复是:一般mysql调优主要是根据慢查询日志去优化sql语句,my.cnf里面可调整的东西不多,而且效果也不明显。 下面就是调整参数,分析mysql慢查询日志。

3、mysql参数优化,主要调整的参数根据机器性能来调整,如果你对参数不是很了解,建议不要盲目的调。给大家一篇参数调整的文章 http://ask.apelearn.com/question/5758 (看第5条)

把一些配置参数修改好后重启mysqld服务,由原来的65s变成了十几秒。效果还是不是很理想,查看了下mysql默认引擎为MyISAM,决定把引擎改为Innodb。具体操作过程如下:

4、导出shop数据库的表结构

mysqldump -d -uxxx -p shop > shop_table.sql

其中-d参数表示不导出数据,只导出表结构

5、替换shop_table.sql里的MyISAM为INNODB

sed -i ‘s/MyISAM/INNODB/g’ shop_table.sql

6、新建数据库shop_new库,并导入表结构

mysql > create database shop_new;

mysql -uroot -p shop_new < shop_table.sql可以通过show table status来检查表引擎是否为INNODB。

7、导出shop的数据

mysqldump -t -uroot -p shop > shop_data.sql其中-t参数表示只导数据,不导表结构

8、导入数据到shop_new

mysql -uroot -p shop_new < shop_data.sql

9、 查看慢查询日志来定位mysql哪条语句执行慢,然后建立索引,优化sql执行语句。这台机器的慢查询日志片段,供大家参考

# Time: 160303 12:12:38

# User@Host: root[root] @  [10.165.34.182]

# Query_time: 10.145685  Lock_time: 0.000395 Rows_sent: 1  Rows_examined: 24306970

use shop;

SET timestamp=1456978358;

SELECT COUNT(*) FROM `shop`.`ecs_order_info` o LEFT JOIN`shop`.`ecs_users` u ON o.user_id = u.user_id LEFT JOIN `shop`.`ecs_affiliate_log` a ON o.order_id = a.order_id WHERE o.user_id > 0 AND (u.parent_id > 0 AND o.is_separate = 0 OR o.is_separate > 0);

# Time: 160303 12:12:44

# User@Host: root[root] @  [10.165.34.182]

# Query_time: 6.073441  Lock_time: 0.000152 Rows_sent: 15  Rows_examined: 24314767

SET timestamp=1456978364;

SELECT o.*, a.log_id, a.user_id as suid,  a.user_name as auser, a.money, a.point, a.separate_type,u.parent_id as up FROM `shop`.`ecs_order_info` o LEFT JOIN`shop`.`ecs_users` u ON o.user_id = u.user_id LEFT JOIN `shop`.`ecs_affiliate_log` a ON o.order_id = a.order_id WHERE o.user_id > 0 AND (u.parent_id > 0 AND o.is_separate = 0 OR o.is_separate > 0)  ORDER BY order_id DESC LIMIT 0,15;

通过慢日志发现其中有几个表查询耗时较长,下面就是把这个查询慢的表建立索引。用到的软件 NAvicat,对查询慢的表进行设计,增加索引。

 

根据 explain  的解释,查看下  索引是否建立,一般都是 这样调整 就行。

 

修改完后重启mysql 服务,查询时间从65s,缩短到 0.017407 秒

shell习题-备份数据表


用shell实现,以并发进程的形式将mysql数据库所有的表备份到当前目录,并把所有的表压缩到一个压缩包文件里。

假设数据库名字为mydb,用户名为aming,密码为passwd。

提示: 在shell中加上&可以将命令丢到后台,从而可以同时执行多条命令达到并发的效果。

 

参考答案:

#!/bin/bash
pre=`date +%F` 
for d in `mysql -uaming -ppasswd mydb -e "show tables"|grep -v 'Tables_in_'`
do
    mysqldump -uaming -ppasswd mydb $d > $d.sql &
done
tar czf $pre.tar.gz *.sql 
rm -f *.sql