1.
概述与准备
在开始之前,确认访问权限(SSH 密钥/账号)、控制台或云面板权限(例如AWS、阿里云、新加坡机房控制台),记录事件时间、影响范围和业务优先级。准备好备用主机、最近备份和快照信息。
2.
第一步:收集初始信息
登陆控制台或通过运维工具查看实例状态;运行 uptime, last, who, cat /etc/os-release 获取系统版本;记录 CPU/内存/磁盘利用情况(top, free -m, df -h)。
3.
第二步:网络连通性诊断
从运维端执行 ping
和 traceroute -n 或 mtr 进行路径追踪;检查防火墙与安全组(iptables -L; ufw status; 在云上检查安全组规则)。若丢包或延迟异常,联系机房或上游提供商并上报故障单。
4.
第三步:SSH 与控制台访问问题
若无法SSH,尝试 ssh -vvv @ 获取握手细节;通过云控制台打开串口/救援模式,或挂载系统盘到救援实例检查 /var/log/auth.log、/var/log/messages 中的登录错误。
5.
第四步:进程与服务检查
列出监听端口与进程:ss -tulnp 或 netstat -tulnp;systemctl status 查看服务状态;若服务崩溃查看 journalctl -u -n 200 或 tail -n 200 /var/log/.log。
6.
第五步:磁盘与文件系统诊断
使用 lsblk, fdisk -l, blkid 确认磁盘分区;df -h 查看挂载点;若只读挂载用 mount -o remount,rw /path;严重损坏用 umount /dev/x && fsck -y /dev/x 或 xfs_repair 对 xfs 文件系统处理。
7.
第六步:存储性能与硬件健康
执行 iostat -x 1 3 检查 IO 瓶颈;smartctl -a /dev/sdX 查询磁盘SMART状态;云磁盘异常时考虑挂载到其他实例做离线检查并创建快照备份。
8.
第七步:数据库与应用数据恢复
若数据库异常,先暂停写入,导出二进制日志或备份:mysqldump --single-transaction 或使用数据库备份恢复工具;如需回滚,按时间点用 binlog 恢复,或从快照/备份用 rsync/restore 恢复数据目录,注意权限与 SELinux 标签。
9.
第八步:配置与依赖检查
核对 /etc/hosts、DNS 解析(dig @8.8.8.8 domain)和证书有效期(openssl s_client -connect host:443);若配置被误改,使用版本控制(git)或配置管理工具(Ansible/Chef)回滚。
10.
第九步:服务重启与顺序恢复
按照依赖顺序重启关键服务:数据库->缓存->应用->负载均衡。使用 systemctl restart 并监控 journalctl 实时输出。对前端无缝切换可先在 LB 下线单节点再重启。
11.
第十步:回滚与快速恢复策略
若更新导致故障,立即回滚代码或配置;若系统盘损坏且无近期备份,优先恢复快照到新实例并切换浮动IP/弹性IP,随后做数据一致性校验(校验和、count 比对)。
12.
第十一步:验证与回归测试
恢复后执行健康检查脚本(HTTP 200 检查、数据库连接、业务交易流);用 load 测试小流量复现场景,查看慢查询与延迟:pt-query-digest, slowlog 等。
13.
第十二步:事件总结与预防措施
记录根因、采取的修复动作和可改进点:增设监控告警(Prometheus + Alertmanager)、自动化备份、定期演练、堡垒机与多可用区部署。
14.
第十三步:常用命令速查表
列举关键命令:ping/traceroute/mtr、ssh -vvv、ss/netstat、top/iostat/df/lsblk、journalctl、fsck/xfs_repair、mysqldump/pg_restore、rsync、smartctl。
15.
问1:在新加坡机房遇到网络抖动时我第一步该做什么?
第一步从运维端和机房控制台同时执行 ping 与 traceroute 到外网和内网目标,记录时序和丢包率,同时检查安全组、路由表与交换机链路状态,若为机房链路问题立即上报NOC并提交故障单。
16.
答1:如何快速切换到备用以减少业务影响?
准备好热备实例或使用云提供的镜像/快照,在发生故障时将弹性IP/负载均衡流量切换到备用实例,或在DNS TTL允许下更新解析,确保数据层使用异地主从或同步方案避免数据丢失。
17.
问2:如果磁盘变成只读无法写入,我该如何处理?
先在控制台或救援机挂载磁盘,使用 dmesg 查看错误日志;尝试 remount 为可写(mount -o remount,rw /mount),若失败则 umount 并运行 fsck -y 或 xfs_repair,必要时从快照恢复数据到新盘。
18.
答2:恢复后如何确认数据一致性?
对比业务表记录数、关键表的 checksum(如 pt-table-checksum)、比对文件数量与校验和(md5sum/sha256sum),同时跑回归用例验证业务流程无异常。
19.
问3:如何防止类似问题再次发生?
建立完善的监控告警、自动备份与演练机制,配置多可用区冗余、定期检查硬件健康和存储快照策略,使用基础设施即代码管理配置并加入变更审批流程。
20.
答3:关键的日常运维习惯有哪些?
定期查看监控与日志、做容量规划、验证备份可用性、演练灾备切换、使用配置管理避免人工误配置,并将常见故障的恢复步骤写成 Runbook 便于快速响应。
来源:实战案例分享新加坡服务器问题从诊断到恢复的完整流程解析