共计 1232 个字符,预计需要花费 4 分钟才能阅读完成。
DBA 登入后,应该关注系统的几个基本状态,做到心中有数。
虽然现在都在推广自动化运维,不过有些时候还是需要登入到服务器去做些事情。那么,在有限的几次登入服务器机会中,作为 DBA 应该关注哪些事情呢?
一方面是查看还有哪些管理员在服务器上,自己的某些操作是否会影响到对方。比如有些洁癖重度患者会把 /tmp 下的临时文件删掉,或者清除一些看到的临时文件,而这些文件没准就是其他管理员临时生成的。
另外,这个习惯也能帮助我们消除一些安全隐患,比如看到某些管理员从不该被允许的远程 IP 登入进来,甚至是有些管理员直接从本地 tty 终端登入进来工作后,忘记关闭终端,直接关闭显示器,这种情况下在 IDC 值守的人,接上键盘就可以长驱直入无需账号密码。就像下面这样的:
第一列表示登录用户名;第二列表示登录终端,tty 表示本地终端 ,pts 表示远程终端;第三列表示登录时间、IP 地址。
遇到这种情况,先找到这个 login bash 的进程 ID,用 lsof 查看是否有打开文件来确认这个进程当前没有进行重要操作,确认没问题的话,就可以把这个进程给 kill 了,这个登入也自然会退出。
了解系统当前负载情况,对比之前同时段登入时的系统负载情况,直观感觉系统负载是否有大幅波动,或者判断系统负载是否超过平均的负载值,以便及时处理。
如果当前系统运行多个 mysqld 进程,或者 MySQL 和 Nginx、PHP、java 等混跑的话,可以查看哪个进程消耗较多资源。
如果是某个 mysqld 进程消耗的 CPU 长期超过 100%,那么 10 有 89 的有可能是因为当前执行的 SQL 没有索引,或者索引使用不当导致。
查看当前 MySQL 中是否有某些状态持续较长时间,比如 Sending data、Coping to tmo table、Creating sort index 等状态,一旦处于这些状态的 SQL 经常出现,那么几乎肯定是需要进行优化了。
说了这么多,肯定有同学按捺不住了。别着急嘛,老叶已经把这些关注点都整到一个 shell 脚本里了,大家可以访问我的 github 查看,也欢迎补充,说说你们登入服务器后,最关注哪些东西,并且会先做哪些事情。
github 地址:https://github.com/zhishutech/mysqldba/blob/master/scripts/dba_login.sh
我们可以把这个脚本放在 DBA 工具专用目录下,然后在 /etc/profile 中增加类似下面这样一行,每次登入后就都会调用脚本执行了:
我之前写过类似脚本,但找不到了,这是昨晚临时随手重写了个,还有很多不完善的。也当做是抛砖引玉了,希望大家继续来补充完善。
下面是登入 MySQL 服务器后的提示