迷途,运维必读:防止毛病、回绝背锅的 10 大原则!,真心话大冒险问题

找到最早发布于2012年,来自网络,原作者不详

https://blog.csdn.net/levy_cui/article/details/51604257

缺点是运维人员永远的痛。信任每一个运维人员的KPI中都有一项:可用性。可用性高便是不出缺点,各个公司对可用性和缺点评级的规范都不相同,可是避免缺点的办法却是异曲同工。咱们怎样避免缺点,简略列举了以下几条,与咱们共勉!

也是运维最繁琐,最苦逼的当地,一切的改变都有必要有回滚的办法,在相同的环境下测试胖头鱼头的做法大全过。没有做过的东西,总是会在你意想不到的当地给你一次痛击,在阿里巴巴的这么多年运维经历告诉咱们,一切没有做过的改变,犯错的概率最大。所以咱们需求给改变以回滚的或许,在各个进程或许犯错的状况下,考虑回滚到开端状况。优异的运维人员对不考虑回滚的的操作都是敬而远之的。从某种意义上来说,运维是一门经历的学科,是一门试错的学科。

第2条,对破坏性的操作慎重当心。

破坏性的操作有哪些列?对数据库来说有:DROP Table, Drop database,truncate table, delete all data;这些操作做完了今后简直无法考虑怎样把数据都回滚回去了。就算回滚,价值也是十分大的。你履行这样的句子十分简略,可是回滚康复数据缺十分困难。linux的指令rm可以-r(recursive)递归的删去某一个目录,-f(force)强制删去,可是你有没有删错失文件。咱们遇到过一个文件名中结尾有空格的状况,而有的搭档rm -r习气性的会在文件名后边加*,这样就成了rm -r aa *,一切当时目录的数据都被删去掉了!通过这次缺点今后咱们给rm做了别号:

alias rm=’rm -i’

这样在删去数据时,rm指令会提示你,是否承认删去该文件。

相同的cp和mv也可以有相同的选项:

alias cp=’cp -i’

alias mv=’mv -i’

第3条,设置好指令提示。

让你时刻知道你在操作哪个数据库,让你知道你在哪个目录下。mysql字符客户端答应你设置提示符,默许的提示符便是一个光溜溜的mysql >,为了和平鸟让你清楚的知道你当时是以哪个用户名,哪个IP(或许是localhost,127.0.0.1或许具体的物理IP),你当时操作的是哪个schema,以及当时的时刻,你可以设置数据库的提示符为:prompt=“u@h : d r:m:s> ”。它可以直接写在my.cnf的[mysql]下,这样你每次连上MySQL就默许显现如下:

root@127.0.0.1 : woqutech 08:24:36>

具体prompt可以设置哪些提示,你可以参阅http://dev.mysql.com/doc/refman/5.6/en/mysql-commands.html 中的列表

而linux指令提示符也答应你设置的。有两个当地可以设置。榜首个:PS1。这个是每次shell提示你输入指令的信息,默许为:$或许#,只会提示你是超级用户仍是一般用户。有经历的运维者会设置export PS1=’ne[1;37m[e[me[1;31mue[me[1;31m@e[me[1;31mhe[m e[4mpwde[me[1;37m]e[me[1;36me[mn$’。这样你就可以知道你当时的目录,登录的用户名和三只小猪盖房子的故事主机信息了,示例提示符如下:

[root@woqu-lsv-01 /home/mysql]#

你可以检查http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html 取得具体的PS1设置色彩,设置各个提示内容的介绍。

第二个提示符便是PROMPT_COMMAND。这个是设置你连到具体的数据库今后标签页标题上显现的内容,Windows用户或许会用securtCRT,Mac用户或许会用iTerm2,开多个标签页的话,假如每个标签页的标题上内容相同,咱们切来切去就有或许在过错的标签页上做操作,设置了这个今后,这个问题概率就会小许多。比方咱们的机器上设置为PROMPT_COMMAND=’echo -ne “033]0;${USER}@${HOSTNA荨麻疹最快医治办法ME%%.*}”; echo -ne “007″‘对应的标签页如下图

第4条,备份并验证备份有用性。

是人总会犯错,是机器总或许会有忽然溃散的那一天。怎样办-咱们需求预备备份。

备份的学识很大。依照不同的纬度可以分为:冷备份和热备份;实时备份和非实时备份;物理备份和逻辑备份。

互联网企业为了供给7*我国高铁24小时不间断的服务,数据库就需求有实时热备份。在主库呈现问题的状况下可以由备库供给服务。备库时分有用,数据是否共同,主库呈现问题的时分怎样切换都需求运维人员细心考虑。

是不是有了这些就够了列?不可,运用程序也是人写的,从前呈现进程序一不当心delete句子没有带任何条件,导致一个表中一切的数据都被删去的惨状。所以你除了实时的备份,还需求有非实时的备份,在你的数据呈现逻辑过错之后可以从备份数据中康复出来。现在许多人在研讨MySQL仿照oracle的flashback功用,运用binlog来康复数据。可是这样的话,binlog_format有必要设置为row而且关于DDL操作也无法回滚。它是为快速处理部分数据被过错删去的处理计划,可是无法替代非实时备份的效果。

非实时备份有可以分为在线延时备份和离线备份。在线延时备份是建立数据库的必定时刻推迟的热备份,比方MySQL就可以建立一个推迟一天的slave,一向保持着备库与主库的推迟在一天。可以运用pt-slave-delay东西来完结这个功用。别的,离线备份是现在咱们用的比较多的,可以运用mysqldump进行逻辑备份或许xtrabackup进行物理备份。为了空间的原因和快速康复考虑,你还可以运用xtrabackup进行增量的物理备份。

备份有了,是否就可以无忧无虑了?仍是不可。你需求验证备份的有用性。没有一个备份可以确保它备份出来的数据可以100%康复出正确的数据,特别是物理备份的概率相对来说,更低,xtrabackup备份一个月总有那么几回来大姨妈,不能给你很好的服务。所以,备份并不仅仅备份,它还包含备恩替卡韦份的验证,它假如不能康复出正确的数据,就仅仅糟蹋空间罢了。备份的验证最简略的便是找一个闲暇的库,来康复出来,mysql发动今后检查部分数据。假如不需求这么慎重,关于xtrabackup来说,你至少得验证它–apply-log可以康复上去吧?相同,备库的奥尔良烤翅的做法数据共同性也需求常常检查一下,mysql的replication并不确保100%的数据共同性,你可以去翻翻mysql statement仿制的bug列表,有些数据在主备不同的环境上别离履行,数据就会不相同。可以考虑用percona的东西pt-table-checksum来检查主备不共同,用pt-table-sync来同步主备数据。

第5条,对出产环境存有敬畏之心。

这应该是运维者进入职业首要需求具有的本质。可是咱们仍是需求把它拿出来着重一下。

有机遇的话,你可以整理一下:

这些都是你避免呈现csdn暗码走漏,在业界的名声一泻千里的法宝。

第6条,交代和度假最简略出缺点,改变请慎重。

这个是经历之谈。咱们在总结缺点的状况时,发现在公司部分有改变时,作业交代(不论是度假,作业责任改变仍是离任),缺点的呈现频率会比正常状况下多50%以上。有人说,这是因为机器或许运用是有爱情的,舍不得脱离的运维者。

咱们不谈爱情,简略的理性剖析一下。公司或许部分不免会做一些调整,改变是世界上仅有不变的作业。而运维人员是一线做作业的人,部分调整或许领导的替换或许导致作业的着重点不同,干事的方法和评测的规范变了,习气进程中不免会呈现一些考虑不周到的当地,出缺点也是情理之中了。

而作业交代,对运维人来说,其实是一个十分费时吃力的作业,你需求把一切往常做的作业都整理清楚,乃至包含你的一些经意不经意的操作习气,这样的话,下一个人才或许接手的下来。比方:你或许以为备库正常状况下没有拜访,所以让某些并不重要的使命(一个月一次抽取部分数据到线下测试?)直连续备机IP进行操作。下一个人接手,以为备机便是备机,操作起来不会有任何问题,成果下一次使命抽取便是一个缺点出来了。再举一个咱们遇到了案例吧:吉林大学榜首医院搭档A出国度假了,度假期间估量联络不上,他留了文档,并劝诫说某几个库和表是比较中心和简略出问题的,没有特殊状况最好等他回来再做改变。正好,度假期间,开发人员找到搭档B,要求他重置一个字段的某一位(bit),并打包票说这个bit没有用,搭档B拒绝,并背上了不合作的臭名北汽战旗。搭档A回来吓了一身盗汗,本来这个字段现已被别的一个离任的开发运用了。

所以,运维部分和运维人员对变迷路,运维必读:避免缺点、拒绝背锅的 10 大原则!,真心话大冒险问题化需求尽量放平心态;接手他人的作业要一而再,再而三的承认改变计划。请教人并不见得便是才能不可的体现;度假前最好各种可以做好的作业,最好可以预备一份文档,指明在什么状况下怎样做和联络哪些人。在他人放假的时分接手作业,“能拖则拖”,真实需求履行:有必要诲人不倦的跟原运维者承认各个操作细节。

第7条,建立报警,及时取得犯错信息。

建立功用监控,了解前史,取得趋势,猜测未来。运维的最高境地不是缺点来了,泰山崩于前而不惊,苍教师蛊惑你而抗日;而是没有缺点,让缺点消失在萌发之中。请给那些默默无闻,每天想着咱们的体系还存在哪些危险,怎样处理,怎样及早发现的运维人员拍手。他们是最心爱的人。而他们赖以生存的东西便是报警和监控。Oracle开展了这么多年,awr和相关的功用参数都相对比较全;MySQL现在也现已迎头赶上,配套的东西越来越多。

报警可以让你及时知道体系呈现全本小说了什么反常。比方slave io报警,在数据库replication反常的时分就会提示你:IO线程呈现了问题,或许是网络问题,主数据库问题等,slave sql报警会提示你replication的SQL线程呈现了问题,或许是主备不共同,sl迷路,运维必读:避免缺点、拒绝背锅的 10 大原则!,真心话大冒险问题ave被停掉了,存储进程在备机有反常或许其他问题。这样你收到迷路,运维必读:避免缺点、拒绝背锅的 10 大原则!,真心话大冒险问题报警就可以及时跟进,而不至于主备长时刻不共同,主库坏掉了想要切换到备库的时分却不能切换。

功用监控可以让你了解体系的前史功用信息。剖析缺点发作时的各种现象,承认缺点的真实原因;了解改变趋势,发现缺点的预兆,及早优化和调整。比方你假如运用了PCI-E的Flash迷路,运维必读:避免缺点、拒绝背锅的 10 大原则!,真心话大冒险问题卡,你可以监控logical_written_bytes,logical_read_bytes,physical_written_bytes,physical_read_bytes以便取得flash卡的每秒的逻辑读写和物理读写字节数。关于MySQL你可以监控Com_delete+Com_delete_multi, Com_insert+Com_insert_select,Com_update+Com_千十九update_multi,Com_select来取得每秒的MyS迷路,运维必读:避免缺点、拒绝背锅的 10 大原则!,真心话大冒险问题QL DML删去,刺进,更新和查询的次数。

报警和功用监控其实不不完全独立的,许多功用的监控项也可以报警出来。比方linux的iostat中的await_time可以作为功用监控采集起来取得体系IO呼应时刻的改变曲线,当该值到达20以上的时分,也可以报警出来,让运维人员跟进是磁盘阵列中坏了一块,仍是反常的数据复制影响了体系的IO功用等。

nagios和cacti是现在MySQL范畴运用最广泛的报警和功用展现体系。percona最新推出percona-monitor-plugins(http://www.percona.com/software/percona-monitoring-plugins)便是根据他们俩的。

第8条:主动切换需慎重。

现在数据库的HA许多都是进行主动切换的,这样运维人员深夜起来手艺出资理财切换到备库的机遇就会少许多。切换也会快速许多。可是,它带来的副效果也不容忽视。

现在业界运用的HA软件十分多,heartbeat因为许多SA兼作DBA的运维比较了解,在MySQL主动切换也是不少的。一般来说,它会通过mysqladmin ping来勘探MySQL是否存活,假如大虾发现反常,那么他就会切换VIP和MySQL资源到备库。可是此刻备库的数据推迟是否为0,主库crash之后binlog的数据是否全部都同步到备库上去了,备库的read_only是否封闭,这些heartbeat都不论。咱们幻想一下,主库上运用提交了一笔订单,成果发作了切换,这笔订单没有同步到备库上,卖家也就丢失了一个出售单,对客户,对公司都是十分大的影响。

当然,主动切换也不能全盘否定,它可以更快速的将运用切换到新的热备份备库上,运用的不可用时刻大大缩短。仅仅咱们要好好运用这一把双刃剑,细心评价它的影响,下降或许去除副效果,让它为咱们服务。

第9条,细心一点,偏执一点,检查,检查,再检查。

之前我跟一个资深的运维学习线上操作的时分,觉得这家伙有点反常,他在做一个改变的时分,会先提早一两周发送邮件并电话手机的告诉相关人;在测试机上写好脚本,招集咱们rev房子两证iew操作进程和脚本;测试完结今后复制到出产环境;登录对应机器,“翻开,封闭,翻开,封闭”该脚本;跟相关人员再次承认履行的操作,次序,时刻点,或许的影响和回滚是否都预备好了;履行前还要退出这个机器,然后再登录进去,“翻开,封闭”脚本;最终才在后台运转脚本,在别的一个窗口登录着,随时ps和检查成果输出。期间姿态规矩,呼吸短促而均匀,目光凝重。操作的人不觉得累,却是一边学习的人很累。

当我做到必定程度,我也开端这样了。医学上,这种如同叫做强迫症。唉…,提早告诉会让咱们都有预备,也避免了暂时相关人员过来说这个操作和其他操作有依靠需求调整操作时刻的问题;招集咱们review进程和脚本是为了让咱们一起来看看整个进程中还有哪些依靠没有考虑到或许哪些细节没有注意到,三个臭皮匠顶一个诸葛亮在运维来说是金科玉律;“翻开,封闭,翻开,封闭”是为了再三承认脚本复制过来是否正确,目录是否正确,考虑在测试环境运转和在出产环境运转有什么不相同的;退出再登录机器是为了确迷路,运维必读:避免缺点、拒绝背锅的 10 大原则!,真心话大冒险问题认我登录的机器的确没有错;在后台运转是忧虑网络忽然中止,我的脚本运转到一半怎样办;调整呼吸和规矩姿态是为了对这个操作的尊敬,对自己作业和运维作业的尊重。

以MySQL 运用flash卡为例吧。flash算是一个比较新的业务,供给的IO比一般磁盘是几个数量级的提高。要想在出产环境运用,首要咱们需求对他进行翔实的评价和破坏性测试,设置各种参数,考虑他们在各种场景下运用的装备;24小时不间断的进行半个月读写操作,半途忽然掉电;高并发,高吞吐量下的测试;温度湿度极限测试;预留空间开释测试等等。然后咱们会测验在测试库上布置试用,搜集和修正各个装备已到达最安稳,最高功用的装备;运转安稳今后咱们才考虑在线上备库运用,而且主备要求异构;恰当的机遇切换为运用新的flahs卡为主库,假如呈现了问题,还可以切换回原主机。

这儿也跟咱们简略介绍一下screen指令,这个指令会在服务器段敞开一个session,就算你的网络断掉了,你的脚本也会主动在后台运转。screen -S woqutech可以敞开一个woqutech指令的后台session;假如你的网络断掉了,你可以用screen -dr woqutech连上之前的session继续进行操作。IBM的吴亦凡微博文档库中有一个十分靠谱的文档:http://www.ibm.com/developerworks/cn/linux/l-cn-screen/。

第10条,简略便是美。

最终一条有点禅的意境了。它和Unix的思维不约而同。咱们总是面临着各种引诱:新的体系架构,新的更智能的指令和东西,最新的硬件渠道,功用更全的HA软件哄女朋友高兴的话等。他们总是以各式各样的方法招引咱们,most exciting,unbelievable,让你骑虎难下。你可以在线下装置,测试,怎样搞都行。可是假如想要在出产环境下运用起来,那就得通过十分具体,十分绵长,各种方法验证其安稳性的进程。

可以运用体系内置指令的话,就不必考虑其他要专门下载装置的软件了;脚本自身就能完结的功用,就没有必要专门找一个功用丰厚的软件来做;linux自身自带的字符界面比那些杂乱的图形界面要简练便利;MySQL的一东电云视些分区,冷僻函数,没有必要的话不要运用。

最终祝咱们运维的传统文化手抄报运维作业一往无前,多福多寿,不出缺点。

参阅:http://feedproxy.google.com/~r/iheavy/~郑婉瑜3/sRnyFPA0R9E/

声明:该文观念仅代表作者自己,搜狐号系信息发布渠道迷路,运维必读:避免缺点、拒绝背锅的 10 大原则!,真心话大冒险问题,搜狐仅供给信息存储空间服务。