运维安全:远离故障的十大原则故障是运维人员永远的痛。相信每一个运维人员的KPI中都有一项:可用性。可用性高就是不出故障,各个公司对可用性和故障评级的标准都不相同,但是避免故障的方法却是殊途同归。我们怎么避免故障,沃趣科技简单列举了以下几条,与大家共勉!1、变更要有回滚,在同样的环境测试过2、对破坏性的操作谨慎小心3、设置好命令提示4、备份并验证备份有效性5、对生产环境存有敬畏之心6、交接和休假最容易出故障,变更请谨慎7、搭建报警,及时获得出错信息。搭建性能监控,了解历史,获得趋势,预测未来8、自动切换需谨慎9、仔细一点,偏执一点,检查,检查,再检查10、简单即是美。第1条,变更要有回滚,在同样的环境测试过。也是运维最繁琐,最苦逼的地方,所有的变更都必须有回滚的办法,在同样的环境下测试过。没有做过的东西,总是会在你意想不到的地方给你一次痛击,在阿里巴巴的这么多年运维经验告诉我们,所有没有做过的变更,出错的概率最大。所以我们需要给变更以回滚的可能,在各个步骤可能出错的情况下,考虑回滚到最初状态。优秀的运维人员对不考虑回滚的的操作都是敬而远之的。从某种意义上来说,运维是一门经验的学科,是一门试错的学科。第2条,对破坏性的操作谨慎小心。破坏性的操作有哪些列?对数据库来说有:DROPTable,Dropdatabase,truncatetable,deletealldata;这些操作做完了以后几乎无法考虑怎么把数据都回滚回去了。就算回滚,代价也是非常大的。你执行这样的语句非常简单,但是回滚恢复数据缺非常困难。Linux的命令rm可以-r(recursive)递归的删除某一个目录,-f(force)强制删除,但是你有没有删错过文件。我们遇到过一个文件名中末尾有空格的情况,而有的同事rm-r习惯性的会在文件名后面加*,这样就成了rm-raa*,所有当前目录的数据都被删除掉了!经过这次故障以后我们给rm做了别名:aliasrm='rm-i'这样在删除数据时,rm命令会提示你,是否确认删除该文件。同样的cp和mv也可以有同样的选项:aliascp='cp-i'aliasmv='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:woqutech08:24:36>具体prompt可以设置哪些提示,你可以参考http://dev.mysql.com/doc/refman/5.6/en/mysql-commands.html中的列表而linux命令提示符也允许你设置的。有两个地方可以设置。第一个:PS1。这个是每次shell提示你输入命令的信息,默认为:$或者#,只会提示你是超级用户还是普通用户。有经验的运维者会设置exportPS1='\n\e[1;37m[\e[m\e[1;31m\u\e[m\e[1;31m@\e[m\e[1;31m\h\e[m\e[4m`pwd`\e[m\e[1;37m]\e[m\e[1;36m\e[m\n\$'这样你就可以知道你当前的目录,登录的用户名和主机信息了,示例提示符如下:[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}@${HOSTNAME%%.*}:${PWD}\007"'对应的标签页如下图关于提示符的设置,更多请参考:修改mysql/oracle/bash/vimrc/cmd提示符格式与颜色http://my.oschina.net/leejun2005/blog/77499第4条,备份并验证备份有效性。是人总会出错,是机器总可能会有突然崩溃的那一天。怎么办-我们需要准备备份。备份的学...