步骤1:确认影响范围:单台还是多台?是单站还是全部站点出现问题?
步骤2:收集时间点与变更记录:最近是否有发布、配置变更、证书更新或系统补丁?记录出问题的精确时间点。
步骤3:并行检查三条主线:网络连通(PING、traceroute/dig)、服务进程(systemctl/ps)、磁盘与资源(df、free、iostat)。按影响范围优先处理。
步骤4:若是台湾机房,立即确认机房公告、BGP/ISP维护(联系机房或查看机房控制台通知)。
步骤1:从运维端本地或外部节点ping目标IP,确认ICMP连通:ping -c 5 <目标IP>。
步骤2:用traceroute或mtr查看路径:mtr -rwzbc 100 <目标IP>,定位是否到达台湾出口或近端丢包。
步骤3:DNS解析是否异常:dig +nocmd +noall +answer example.com 或 nslookup example.com,确认A/AAAA/CNAME记录是否指向正确IP。
步骤4:若DNS异常,检查域名注册商与DNS托管商(如Cloudflare、Gandi),并查看TTL、解析记录是否被误改,必要时回滚记录并降低TTL以快速生效。
步骤1:尝试SSH登录:ssh -vvv user@ip,查看握手与认证阶段卡在哪一步。
步骤2:若SSH不可达,检查远程主机是否响应端口:telnet ip 22 或 ss -tulpn | grep sshd(在同机房其他节点执行)。
步骤3:检查防火墙/安全组规则(iptables/nftables/ufw/云安全组):sudo iptables -L -n -v;确认未误封SSH端口。
步骤4:若仍不可达,使用机房提供的KVM/IPMI或控制台(Console)登录排查本机网络配置和服务状态。
步骤1:查看服务状态:sudo systemctl status nginx(或 apache2/httpd)。
步骤2:查看实时错误日志:tail -n 200 /var/log/nginx/error.log;同时查看access日志确认异常请求量。
步骤3:端口监听与进程:sudo ss -tulpn | grep :80 或 :443;确认进程占用。
步骤4:配置语法检查并热加载:sudo nginx -t && sudo nginx -s reload;若配置错误,按备份文件回滚(cp /etc/nginx/nginx.conf{.bak,})。
步骤5:证书问题:sudo openssl s_client -connect domain:443 -servername domain -brief 或检查 /etc/letsencrypt/live 下证书有效期,必要时使用 certbot renew。
步骤1:检查进程与端口:sudo systemctl status mysqld;mysqladmin -uroot -p ping。
步骤2:查看错误日志:sudo tail -n 200 /var/log/mysql/error.log 或 /var/lib/mysql/
步骤3:若因磁盘空间导致无法启动,先清理/var/log或扩容磁盘(df -h;du -sh /var/lib/mysql)。
步骤4:恢复方式:最常用是从逻辑备份恢复:mysql -uroot -p < backup.sql;若需减少数据丢失,使用最近全备 + binlog 恢复(mysqlbinlog binlog.00000* | mysql -uroot -p)。
步骤5:若InnoDB崩溃,按顺序尝试:innodb_force_recovery=1..6 在 my.cnf 添加逐级尝试,导出数据后重建实例。
步骤1:查看磁盘与inode使用:df -h;df -i;找出使用率接近100%的分区。
步骤2:定位大文件:sudo du -h --max-depth=1 /var | sort -hr | head -n 20;或使用 ncdu 做交互式清理。
步骤3:清理日志与临时文件:logrotate 手动执行:sudo logrotate -f /etc/logrotate.conf;清理 /tmp、/var/tmp、缓存目录。
步骤4:若需快速释放空间,压缩或移动大文件到备份盘:gzip bigfile && mv bigfile.gz /backup/,同时通知团队并计划扩容。
步骤1:查看实时连接与请求数:sudo ss -s;tail -n 200 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head。
步骤2:临时限流:在Nginx加入limit_req_zone/limit_conn或在WAF/CDN端启用防刷规则;调整keepalive_timeout 降低资源占用。
步骤3:横向扩容:在负载均衡器上临时把新实例加入后端池,使用自动化脚本(Ansible/terraform)启动实例并同步配置。
步骤4:长期策略:开启CDN(Cloudflare、Akamai、国内可选)与缓存策略(静态文件缓存与页面缓存)。
步骤1:确认LB健康检查:查看负载均衡控制台或HAProxy/nginx upstream健康状态。
步骤2:将故障主机从后端池下线:在LB上标记为drain或down,避免新的请求打到问题主机。
步骤3:若需切换主备,执行数据库主从切换(先确保从节点延迟为0):STOP SLAVE;CHANGE MASTER TO...;提升slave为master 并修改应用连接字符串或切换VIP/浮动IP。
步骤4:验证切换后应用流量与数据一致性,保留旧主做只读检查并最终进行复位或重建。
步骤1:备份类型与频率:每日逻辑备份(mysqldump)、每小时增量(binlog)、定期全量快照(LVM或云快照)。
步骤2:远端与异地备份:将备份推送到异地机房或对象存储(rsync到异地、rclone 上传到 S3/OSS),并定期校验备份有效性(restore test)。
步骤3:恢复演练:制定并执行 RTO/RPO 满足业务需求的恢复演练脚本,记录每次恢复耗时与问题点。
步骤4:典型恢复命令举例:恢复MySQL全量:mysql -uroot -p < full_backup.sql;用rsync恢复文件:rsync -avzP /backup/server/ user@newhost:/。
答:首先从不同地理位置(本地、台湾外节点)执行ping/mtr到目标IP,若多点出现同一路径在同一跳有高丢包或超时,极可能为机房或ISP问题。随后登录机房控制台或联系机房工程师确认BGP/光路维护;同时查看机房状态页面与公告;若可用,暂用备用线路或切换到异地备用节点以尽快恢复服务。
答:先恢复最近一次全量备份(full_backup.sql),然后应用从该备份之后的所有binlog:mysqlbinlog --start-datetime="YYYY-MM-DD hh:mm:ss" binlog.* | mysql -uroot -p。关键是记录最后一次备份时间并确保binlog链完整。若有GTID可用,使用GTID进行精确恢复并验证恢复后的数据完整性与应用一致性。
答:若已部署浮动IP或VIP,先在控制台将VIP指向备用机并检查服务与数据库是否启动;若使用DNS切换,降低TTL并替换A记录,随后验证流量切换。数据库方面若为主从架构,提升从库为主(停止slave、配置为新的master),更新应用配置或使用VIP切换。并在后台记录故障原因,安排主机维修或替换并把重建好的机器作为新的从库加入集群。