核心库CPU飙到99%了!我发现很多DBA都不会看日志……

IT邦德 2025-07-28 14:31:19
日志是数据库发生故障时,最有效率的定位工具,没有日志给我们输出的错误信息,遇到突发故障对于DBA来说确实一脸懵逼。

 

这里小编给大家分享数据库关键日志速查、真实踩坑案例、高可用架构排雷技巧,建议收藏转发防丢。

 

一、故障现场

 

张工!核心库CPU飙到99%了!王哥!主从延迟突然暴涨到半小时!

 

内部统计,80%的DBA排查故障时, 在错误日志里大海捞针,被海量监控指标绕晕, 忽略高可用架构的隐藏陷阱。

 

 

二、日志破案指南

 

 
1、Oracle日志

 

alert.log:该日志文件包含了数据库的所有警告和错误信息。查看该日志文件可以了解数据库的运行状况和异常情况。

 

listener.log:该日志文件记录了与Oracle监听器相关的信息,包括监听器启动、连接请求等。查看该日志文件可以了解监听器的运行情况和连接请求信息。

 

trace文件:Oracle数据库在遇到故障或某些特定操作时会生成trace文件,其中包含了详细的错误堆栈信息。查看trace文件可以帮助定位和解决数据库故障。

 

如需深入诊断复杂问题,建议结合AWR报告、ASH数据等性能工具进一步分析。

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
实时跟踪日志更新:tail -f $ORACLE_BASE/diag/rdbms/<数据库名>/<实例名>/trace/alert_<实例名>.log
过滤关键错误信息:# 提取所有Oracle错误代码grep "ORA-" alert_<实例名>.log# 按错误号筛选grep "Error 7445" alert_<实例名>.log | more分页查看历史日志:# 支持上下翻页和搜索less alert_<实例名>.log   
统计错误频率:grep "ORA-01555" alert_<实例名>.log | awk '{print $1}' | sort | uniq -c
ADRCI命令行工具:show alert查看日志,支持按时间范围过滤:adrci> show alert -p "message_text like '%ORA-00600%'" -term
EMCC搜索:通过图形界面导航至“日志”选项卡,可直观查看Alert日志,并支持时间范围筛选和关键字搜索

 

 
2、MySQL篇

 

错误日志:记录MySQL启动、运行、关闭过程中的错误及警告信息

 

慢查询日志:记录执行时间超过设定阈值(默认10秒)的SQL语句,用于性能优化。

 

二进制日志:记录所有数据变更操作(增删改),用于数据恢复、主从复制

 

通用查询日志:记录所有客户端连接和SQL操作(如用户登录、查询语句),适合审计和全链路追踪。

 

查案口诀就是:紧急情况看error log,性能问题锁slow log,死锁追踪用show engine innodb status

 

 
3、PostgreSQL篇

 

pgBadger:生成HTML报告,统计查询频率、耗时分布等

 

pg_stat_statements:扩展模块,记录SQL执行统计

 

pgAdmin:连接数据库后,在左侧导航栏选择服务器 → “日志”选项卡,支持实时查看、筛选时间范围及错误级别

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
logging_collector = onlog_directory = 'pg_log'log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'log_statement = 'all'# 记录执行超过1秒的慢查询log_min_duration_statement = 1000# 记录锁等待超过deadlock_timeout的查询log_lock_waits = on
查看当前锁状态# 查看所有锁SELECT * FROM pg_locks;# 查看阻塞会话SELECT * FROM pg_stat_activity WHERE wait_event_type = 'Lock';

 

三、高可用架构日志排查

 

 
1、Oracle RAC

 

私网延迟的排查技巧:oradebug命令

 

脑裂现场的日志特征:cssd.log关键段落解析

 

 
2、MySQL主从

 

从库SQL线程卡住的3种征兆:Seconds_Behind_Master骗局

 

大事务引发的GTID黑洞:binlog内容解析

 

 
3、PostgreSQL流复制

 

同步备库假死的识别方法:pg_stat_replication

 

WAL堆积的雪崩效应:LSN计算速查公式

 

autovacuum风暴的识别与镇压

 

四、DBA的生存哲学

 

真正的高手不是从不宕机,而是能从日志的蛛丝马迹中,比业务方早10分钟发现隐患,在老板发火前给出根因分析,用一份故障报告赢得明年预算。

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
-- Oracle救命三连  SELECT * FROM v$session_wait WHERE wait_class != 'Idle';  ALTER SYSTEM DUMP LOGFILE 'xxx';  -- MySQL死锁检测  SHOW ENGINE INNODB STATUS\G  -- PostgreSQL查杀利器  SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE...  

 

五、总结

 

日志作为数据库系统的“黑匣子”,通过记录运行状态、操作历史及异常事件,为故障排查提供关键线索。

 

日志通过结构化记录数据库全生命周期事件,使运维人员能够快速定位故障根因、优化性能瓶颈并保障数据安全。

 

作者丨詹姆斯邦德007
来源丨公众号:IT邦德(ID:jeamesDB
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
最新评论
访客 2024年04月08日

如果字段的最大可能长度超过255字节,那么长度值可能…

访客 2024年03月04日

只能说作者太用心了,优秀

访客 2024年02月23日

感谢详解

访客 2024年02月20日

一般干个7-8年(即30岁左右),能做到年入40w-50w;有…

访客 2023年08月20日

230721

活动预告