运维操作规范十大原则14_第1页
运维操作规范十大原则14_第2页
运维操作规范十大原则14_第3页
运维操作规范十大原则14_第4页
运维操作规范十大原则14_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、个人收集整理勿做商业用途封面作者: ZHANGJIAN仅供个人学习,勿做商业用途1 / 12勿做商业用途个人收集整理运维安全:远离故障的十大原则 故障是运维人员永远的痛。相信每一个运维人员的 KPI 中都有一项:可用性。可用 性高就是不出故障,各个公司对可用性和故障评级的标准都不相同,但是避免故障 的方法却是殊途同归。我们怎么避免故障,沃趣科技简单列举了以下几条,与大家共勉!1、变更要有回滚,在同样的环境测试过2、对破坏性的操作谨慎小心3、设置好命令提示4、备份并验证备份有效性5、对生产环境存有敬畏之心6、交接和休假最容易出故障,变更请谨慎7、搭建报警,及时获得出错信息。搭建性能监控,了解历史

2、,获得趋势,预测未来8、自动切换需谨慎9、仔细一点,偏执一点,检查,检查,再检查10、简单即是美。第 1 条,变更要有回滚,在同样的环境 测试 过。 资料个人收集整理,勿做商业用途也是运维最繁琐,最苦逼的地方,所有的变更都必须有回滚的办法,在同样的环境下测试过。没有做过的东西,总是会在你意想不到的地方给你一次痛击,在阿里巴巴的这么多年运维经验告诉我们,所有没有做过的变更,出错的概率最大。所以我 们需要给变更以回滚的可能, 在各个步骤可能出错的情况下, 考虑回滚到最初状态。优秀的运维人员对不考虑回滚的的操作都是敬而远之的。从某种意义上来说,运维 是一门经验的学科,是一门试错的学科。 资料个人收集

3、整理,勿做商业用途第 2 条,对破坏性的操作谨慎小心。破坏性的操作有哪些列?对 数据库 来说有: DROP Table, Drop database, truncate table, delete all data;这些操作做完了以后几乎无法考虑怎么把数据都回滚回去了。 就算回滚,代价也是非常大的。你执行这样的语句非常简单,但是回滚恢复数据缺 非常困难。 Linux 的命令 rm 可以-r(recursive)递归的删除某一个目录, -f(force) 强制 删除,但是你有没有删错过文件。我们遇到过一个文件名中末尾有空格的情况,而2 / 12勿做商业用途个人收集整理有的同事 rm -r 习惯性

4、的会在文件名后面加,这样就成了rm -r aa * ,所有当前目录的数据都被删除掉了!经过这次故障以后我们给 rm 做了别名: 资料个人收集整理,勿做 商业用途alias rm=rm -i 这样在删除数据时, rm 命令会提示你,是否确认删除该文件。同样的 cp 和 mv 也可以有同样的选项:alias cp=cp -ialias mv=mv -i资料个人收集整理,勿做商业用途第 3 条,设置好命令提示。 让你时刻知道你在操作哪个数据库,让你知道你在哪个目录下。 MySQL 字符客户 端允许你设置提示符,默认的提示符就是一个光秃秃的mysql ,为了让你清楚的知道你当前是以哪个用户名,哪个 I

5、P(可能是 localhost, 或者具体的物理 IP),你当前操作的是哪个 schema,以及当前的时间,你可以设置数据库的提示符 为:prompt=”s “。它可以直接写在 f 的mysql 下,这样你每次连上 MySQL 就默认显示如下: 资料个人收集整理,勿做商业用途root : woqutech 08:24:36具体 prompt 可以设置哪些提示,你可以参考 中的列表而 linux 命令提示符也允许你设置的。有两个地方可以设置。第一个:PS1。这个是每次 shell 提示你输入命令的信息,默认为: $或者 #,只会提示你是超级用户还是普 通用户。

6、有经验的运维者会设置 exportPS1=ne1;37meme1;31mueme1;31meme1;31mheme4mpwdeme1;37meme1;36memn$这样你就可以知道你当前的目录,登录的用户名和主机信息了,示例提示符如下:rootwoqu-lsv-01 /home/mysql#你可以查看 /tips/howto-linux-unix-bash-shell-setup-prompt.html 获得具体的 PS1 设置颜色,设置各个提示内容的介绍。第二个提示符就是 PROMPT_COMMAND 。这个是设置你连到具体的数据库以后标 签页标

7、题上显示的内容, Windows 用户可能会用 securtCRT, Mac 用户可能会用 iTerm2,开多个标签页的话,如果每个标签页的标题上内容一样,我们切来切去就 有可能在错误的标签页上做操作,设置了这个以后,这个问题概率就会小很多。比 如我们的机器上设置为3 / 12勿做商业用途个人收集整理PROMPT_COMMAND=echo -ne0330;$USER$HOSTNAME%.*:$PWD007对应的标签页如下图资料个人收集整理,勿做商业用途关于提示符的设置,更多请参考:修改 mysql/oracle/bash/vimrc/cmd 提示符格式与颜色 资料个人收集整理,勿做商业用途第

8、4 条,备份并验证备份有效性。是人总会出错, 是机器总可能会有突然崩溃的那一天。 怎么办我们需要准备备份。备份的学问很大。按照不同的纬度可以分为:冷备份和热备份;实时备份和非实时 备份;物理备份和逻辑备份。互联网企业为了提供 7*24 小时不间断的服务, 数据库就需要有实时热备份。 在主库 出现问题的情况下能够由备库提供服务。备库时候有效,数据是否一致,主库出现 问题的时候怎么切换都需要运维人员认真考虑。是不是有了这些就够了列?不行,应用程序也是人写的,曾经出现过程序一不小心 delete语句没有带任何条件,导致一个表中所有的数据都被删除的惨状。所以你除 了实时的备份,还需要有非实时的备份,在

9、你的数据出现逻辑错误之后能够从备份 数据中恢复出来。现在很多人在研究 MySQL 模仿 oracle的 flashback功能,利用 binlog 来恢复数据。 但是这样的话, binlog_format 必须设置为 row 并且对于 DDL 操作也无 法回滚。它是为快速解决部分数据被错误删除的解决方案,但是无法代替非实时备 份的作用。非实时备份有可以分为在线延时备份和离线备份。在线延时备份是搭建数据库的一 定时间延迟的热备份,比如 MySQL 就可以搭建一个延迟一天的 slave,一直保持着 备库与主库的延迟在一天。可以利用 pt-slave-delay 工具来实现这个功能。另外,离 线备份

10、是目前大家用的比较多的, 可以利用 mysqldump 进行逻辑备份或者 xtrabackup 进行物理备份。为了空间的原因和快速恢复考虑,你还可以利用 xtrabackup 进行增 量的物理备份。4 / 12勿做商业用途个人收集整理备份有了,是否就可以高枕无忧了?还是不行。你需要验证备份的有效性。没有一 个备份能够保证它备份出来的数据能够 100%恢复出正确的数据, 特别是物理备份的 概率相对来说,更低, xtrabackup 备份一个月总有那么几次来大姨妈,不能给你很 好的服务。所以,备份并不只是备份,它还包括备份的验证,它如果不能恢复出正 确的数据,就只是浪费空间而已。备份的验证最简单的

11、就是找一个空闲的库,来恢 复出来, mysql 启动以后检查部分数据。如果不需要这么严谨,对于 xtrabackup 来 说,你至少得验证它 apply-log 能够恢复上去吧?同样, 备库的数据一致性也需要经 常检查一下, mysql 的 replication 并不保证 100%的数据一致性, 你可以去翻翻 mysql statement复制的 bug 列表,有些数据在主备不同的环境上分别执行,数据就会不一 样。可以考虑用 percona的工具 pt-table-checksum来检查主备不一致,用 pt-table-sync 来同步主备数据。资料个人收集整理,勿做商业用途第 5 条,对生

12、产环境存有敬畏之心。这应该是运维者进入行业首先需要具备的素质。但是我们还是需要把它拿出来强调一下。有机会的话,你可以梳理一下:你的生产环境上有哪些账户,这些账户是否都确实需要登录到机器上来?这 些账户即包括 linux 用户还包括数据库账户。 资料个人收集整理,勿做商业用途 你的 root 用户是否开放给了某些用户,这些用户安全吗? 你的用户密码是否经常修改,是否加密不让具体的操作人员直接看到,密码 强度时候足够,密码重试次数达到一定次数是否黑名单; 资料个人收集整理,勿做 商业用途 你的生产环境和线下环境是否隔离,数据库是否和外网隔离? 是否一些工作明明能够在开发库和测试库做,却被放到生产环

13、境上去了。 是否有专门的人负责线上应用的发布,从而避免开发人员直接接触生产环境5 / 12勿做商业用途个人收集整理这些都是你避免出现 csdn 密码泄漏,在业界的名声一落千丈的法宝。第 6 条,交接和休假最容易出故障,变更请谨慎。 这个是经验之谈。我们在总结故障的情况时, 发现在公司部门有变化时, 工作交接 (不 管是休假,工作职责变化还是离职 ),故障的出现频率会比正常情况下多 50%以上。 有人说,这是因为机器或者应用是有感情的,舍不得离开的运维者。 资料个人收集整理, 勿做商业用途我们不谈感情,简单的理性分析一下。公司或者部门难免会做一些调整,变化是世 界上唯一不变的事情。而运维人员是一

14、线做事情的人,部门调整或者领导的更换可 能导致工作的着重点不同,做事的方式和评测的标准变了,适应过程中难免会出现 一些考虑不周到的地方,出故障也是情理之中了。而工作交接,对运维人来说,其实是一个非常费时费力的事情,你需要把所有平常 做的工作都梳理清楚,甚至包括你的一些经意不经意的操作习惯,这样的话,下一 个人才可能接手的下来。比如:你可能认为备库正常情况下没有访问,于是让某些 并不重要的任务 (一个月一次抽取部分数据到线下测试? )直接连备机 IP 进行操作。 下一个人接手,认为备机就是备机,操作起来不会有任何问题,结果下一次任务抽 取就是一个故障出来了。再举一个我们遇到了事例吧:同事 A 出

15、国休假了,休假期 间估计联系不上, 他留了文档,并告诫说某几个库和表是比较核心和容易出问题的, 没有特殊情况最好等他回来再做变更。正好,休假期间,开发人员找到同事B ,要求他重置一个字段的某一位( bit),并打包票说这个 bit没有用,同事 B 拒绝,并 背上了不配合的骂名。同事 A 回来吓了一身冷汗,原来这个字段已经被另外一个离 职的开发使用了。所以,运维部门和运维人员对变化需要尽量放平心态;接手别人的工作要一而再,再而三的确认变更方案。请教人并不见得就是能力不行的表现;休假前最好各种可 以做好的事情,最好能够准备一份文档,指明在什么情况下怎么做和联系哪些人。 在别人放假的时候接手工作,

16、“能拖则拖 ”,实在需要执行:必须不厌其烦的跟原运 维者确认各个操作细节。资料个人收集整理,勿做商业用途6 / 12勿做商业用途个人收集整理第 7 条,搭建报警,及时获得出错信息。 搭建性能监控,了解历史,获得趋势,预测未来。运维的最高境界不是故障来了, 泰山崩于前而不惊, 苍老师勾引你而抗日; 而是没有故障, 让故障消失在萌芽之中。 请给那些默默无闻,每天想着我们的系统还存在哪些隐患,怎么解决,怎么及早发 现的运维人员鼓掌。他们是最可爱的人。而他们赖以生存的工具就是报警和监控。 Oracle 发展了这么多年, awr 和相关的性能参数都相对比较全; MySQL 现在也已经 迎头赶上,配套的工

17、具越来越多。 资料个人收集整理,勿做商业用途报警可以让你及时知道系统出现了什么异常。 比如 slave io 报警,在数据库 replication 异常的时候就会提醒你: IO 线程出现了问题,可能是网络问题,主数据库问题等, slave sql报警会提醒你 replication 的 SQL线程出现了问题,可能是主备不一致, slave 被停掉了,存储过程在备机有异常或者其他问题。 这样你收到报警就可以及时跟进, 而不至于主备长时间不一致,主库坏掉了想要切换到备库的时候却不能切换。性能监控可以让你了解系统的历史性能信息。分析故障发生时的各种现象,确认故 障的真正原因;了解变化趋势,发现故障

18、的苗头,及早优化和调整。比如你如果使 用了 PCI-E 的 Flash 卡,你可以监控 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来获得 每秒的 MySQL DML 删除,插入,更新

19、和查询的次数。报警和性能监控其实不不完全独立的,很多性能的监控项也可以报警出来。比如 linux 的 iostat中的 await_time 可以作为性能监控采集起来获得系统 IO响应时间的变 化曲线, 当该值达到 20 以上的时候, 也可以报警出来, 让运维人员跟进是磁盘阵列 中坏了一块,还是异常的数据拷贝影响了系统的IO 性能等。nagios和cacti 是目前 MySQL 领域使用最广泛的报警和性能展示系统。 percona最新 推出 percona-monitor-plugins( 就是基于他们俩的。资料个人收集整理,勿做商业用途第 8 条:自动切换需谨慎7 / 12勿做商业用途个人收

20、集整理现在数据库的 HA 很多都是进行自动切换的,这样运维人员深夜起来手工切换到备 库的机会就会少很多。切换也会快速很多。但是,它带来的副作用也不容忽视。 资料 个人收集整理,勿做商业用途现在业界使用的 HA 软件非常多,heartbeat由于很多 SA 兼作 DBA 的运维比较熟悉, 在 MySQL 自动切换也是不少的。一般来说,它会通过 mysqladmin ping 来探测 MySQL 是否存活,如果发现异常,那么他就会切换 VIP 和 MySQL 资源到备库。但 是此时备库的数据延迟是否为 0,主库 crash之后 binlog 的数据是否全部都同步到备 库上去了,备库的 read_o

21、nly 是否关闭,这些 heartbeat都不管。我们想象一下,主 库上应用提交了一笔订单,结果发生了切换,这笔订单没有同步到备库上,卖家也 就损失了一个销售单,对客户,对公司都是非常大的影响。当然,自动切换也不能全盘否定, 它能够更快速的将应用切换到新的热备份备库上, 应用的不可用时间大大缩短。只是我们要好好利用这一把双刃剑,仔细评估它的影 响,降低或者去除副作用,让它为我们服务。资料个人收集整理,勿做商业用途第 9 条,仔细一点,偏执一点,检查,检查,再检查。 之前我跟一个资深的运维学习线上操作的时候,觉得这家伙有点变态,他在做一个 变更的时候,会先提前一两周发送邮件并电话手机的通知相关人

22、;在测试机上写好 脚本,召集大家 review 操作步骤和脚本;测试完成以后拷贝到生产环境;登录对应 机器,“打开,关闭,打开,关闭 ”该脚本;跟相关人员再次确认执行的操作, 顺序, 时间点,可能的影响和回滚是否都准备好了;执行前还要退出这个机器,然后再登 录进去, “打开,关闭 ”脚本;最后才在后台运行脚本,在另外一个窗口登录着,随 时 ps 和查看结果输出。期间姿势端正,呼吸急促而均匀,眼神凝重。操作的人不觉 得累,倒是一边学习的人很累。 资料个人收集整理,勿做商业用途当我做到一定程度,我也开始这样了。医学上,这种好像叫做强迫症。唉 ,提前 通知会让大家都有准备,也避免了临时相关人员过来说

23、这个操作和其他操作有依赖 需要调整操作时间的问题;召集大家 review 步骤和脚本是为了让大家一起来看看整 个过程中还有哪些依赖没有考虑到或者哪些细节没有注意到,三个臭皮匠顶一个诸 葛亮在运维来说是金科玉律; “打开,关闭,打开,关闭 ”是为了一再确认脚本拷贝8 / 12勿做商业用途个人收集整理过来是否正确,目录时候正确,思考在测试环境运行和在生产环境运行有什么不一 样的;退出再登录机器是为了确认我登录的机器确实没有错;在后台运行是担心网 络突然中断,我的脚本运行到一半怎么办;调整呼吸和端正姿势是为了对这个操作 的敬重,对自己工作和运维工作的尊重。以 MySQL 使用 flash 卡为例吧。

24、 flash 算是一个比较新的事务,提供的 IO 比普通磁 盘是几个数量级的提升。要想在生产环境使用,首先我们需要对他进行详尽的评估 和破坏性测试,设置各种参数,考虑他们在各种场景下使用的配置; 24 小时不间断 的进行半个月读写操作,中途突然掉电;高并发,高吞吐量下的测试;温度湿度极 限测试;预留空间释放测试等等。然后我们会尝试在测试库上部署试用,收集和修 改各个配置已达到最稳定,最高性能的配置;运行稳定以后我们才考虑在线上备库 使用,并且主备要求异构;适当的时机切换为使用新的 flahs 卡为主库,万一出现了 问题,还可以切换回原主机。这里也跟大家简单介绍一下 screen命令,这个命令会

25、在服务器段开启一个 session, 就算你的网络断掉了,你的脚本也会自动在后台运行。 screen -S woqutech可以开启 一个 woqutech 命令的后台 session;如果你的网络断掉了,你可以用 screen -drwoqutech 连上之前的 session继续进行操作。 IBM 的文档库中有一个非常靠谱的 文档: 。资料个人收集整理,勿做商业用途第 10 条,简单即是美。最后一条有点禅的意境了。它和 Unix 的思想不谋而合。我们总是面临着各种诱惑: 新的系统 架构,新的更 智能的命令和工具,最新的硬件平台,功能更全的 HA 软件 等。他们总是以各种各样的方式吸引我们,

26、 most exciting,unbelievable,让你欲罢不 能。你可以在线下安装, 测试,怎么搞都行。 但是如果想要在生产环境下使用起来, 那就得经过非常详细,非常漫长,各种方式验证其稳定性的过程。 资料个人收集整理,勿 做商业用途能够使用系统内置命令的话,就不用考虑其他要专门下载安装的软件了;脚本本身 就能完成的功能,就没有必要专门找一个功能丰富的软件来做; linux 本身自带的字 符界面比那些复杂的图形界面要简洁方便; MySQL 的一些分区, 生僻函数, 没有必 要的话不要使用。9 / 12个人收集整理勿做商业用途最后用文中的一句话送给运维的同学:如果你没有测试过你的备份,就等

27、于没有备 份。 资料个人收集整理,勿做商业用途10 / 12勿做商业用途个人收集整理版权申明 本文部分内容,包括文字、图片、以及设计等在网上搜集整理。 版权为张俭个人所有This article includes some parts, including text, pictures, and design. Copyright is Zhang Jians personal ownership.资料个人收集整理,勿做商业用途用户可将本文的内容或服务用于个人学习、 研究或欣赏, 以及其 他非商业性或非盈利性用途, 但同时应遵守著作权法及其他相关法律 的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本 文任何内容或服务用于其他用途时, 须征得本人及相关权利人的书面 许可,并支付报酬 。 资料个人收集整理,勿做商业用途Users may use the contents or services of this articlefor per

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论