暂无图片
暂无图片
9
暂无图片
暂无图片
暂无图片

OceanBase日志概述

2023-03-18
1629

OceanBase 数据库在运行过程中会自动生成日志。运维工程师通过查看和分析日志,可以了解 OceanBase 数据库的启动和运行状态。本文主要介绍日志的基本信息,包括日志分类、日志级别、日志数据格式等信息。

日志模块类型

程序日志分为不同的模块,且有父模块和子模块两个层级。

OceanBase 数据库的父模块包括 CLIENT 、CLOG 、COMMON 、ELECT 、LIB 、PROXY 、RPC 、RS 、SERVER 、SHARE 、SQL 、STORAGE 、TLOG 等。如果父模块下含有子模块,则表示成: 父模块.子模块 。例如:SQL.PARSER ,则 SQL 表示 SQL 模块,SQL.PARSER 表示 SQL 模块下的 PARSER 子模块;SQL.* 表示 SQL 模块下的所有子模块。

日志文件分类

OceanBase 数据库日志模块所属的日志文件分为 observer.log 、election.log 和 rootservice.log 三种类型,默认打印 INFO 级别以上的日志。每类日志文件自动生成一个带有 .wf 后缀的 WARNING 日志文件( observer.log.wfelection.log.wf 、rootservice.log.wf ),只打印了 WARN 级别以上的日志。

日志名称日志路径
启动和运行日志( observer.log 、observer.log.wf )OBServer 服务器的 $work_dir/log 目录下。
选举模块日志( election.log 、election.log.wf )OBServer 服务器的 $work_dir/log 目录下。
RootService 日志( rootservice.log 、rootservice.log.wf )OBServer 服务器的 $work_dir/log 目录下。

日志级别

OceanBase 数据库日志划分了六个日志级别,含义如下表所示。表中的日志级别从高到低依次排列。

日志级别含义
ERROR严重错误。用于记录系统的故障信息,且必须进行故障排除,否则系统不可用。
USER_ERROR用户输入导致的错误。
WARN警告。用于记录可能会出现的潜在错误。
INFO提示。用于记录系统运行的当前状态,该信息为正常信息。
TRACE与 INFO 相比更细致化地记录事件消息。
DEBUG调试信息。用于调试时更详细地了解系统运行状态,包括当前调用的函数名、参数、变量、函数调用返回值等。

日志数据格式

日志数据格式如下,具体格式以实际情况为准。

  • [time] log_level [module_name] (file_name:fine_no) [thread_id][Y_trace_id0-trace_id1] [lt=last_log_print_time] [dc=dropped_log_count] log_data_

  • [time] log_level [module_name] function_name (file_name:fine_no) [thread_id][Y_trace_id0-trace_id1] [lt=last_log_print_time] [``dc=``dropped_log_count] log_data_

日志打印示例如下:

[admin@OceanBase000000000.sqa.ztt /home/admin/oceanbase/log] 
$tail -f -n 1 observer.log
[2016-07-17 14:18:04.845802] INFO  [RPC.OBMYSQL] obsm_handler.cpp:191 [9543][Y0-0] [lt=47] [dc=0] connection close(easy_connection_str(c)="192.168.0.2:56854_-1_0x7fb8a9171b68", version=0, sessid=2147562562, tenant_id=1, server_id=1, is_need_clear_sessid_=true, ret=0) 
[admin@OceanBase000000000.sqa.ztt /home/admin/oceanbase/log] 
$tail -f -n 1 observer.log.wf
[2016-07-17 14:18:28.431351] WARN  [SQL.SESSION] set_conn (ob_basic_session_info.cpp:2568) [8541][YB420AF4005E-52A8CF4E] [lt=16] [dc=0] debug for set_conn(conn=0x7fb8a9171b68, lbt()="0x4efe71 0x818afd 0xe9ea5b 0x721fc8 0x13747bc 0x2636db0 0x2637d68 0x5054e9 0x7fb98705aaa1 0x7fb9852cc93d ", magic_num_=324478056, sessid_=2147562617, version_=0) 
[admin@OceanBase000000000.sqa.ztt /home/admin/oceanbase/log] 
$tail -f -n 1 rootservice.log
[2016-07-17 14:18:53.701463] INFO  [RS] ob_server_table_operator.cpp:345 [8564][Y0-0] [lt=11] [dc=0] svr_status(svr_status="active", display_status=1) 
[admin@OceanBase000000000.sqa.ztt /home/admin/oceanbase/log] 
$tail -f -n 1 rootservice.log.wf
[2016-07-16 02:02:12.847602] WARN  [RS] choose_leader (ob_leader_coordinator.cpp:2067) [8570][YB420AF4005E-4626EDFC] [lt=8] [dc=0] choose leader info with not same candidate num(tenant_id=1005, server="192.168.0.1:2882", info={original_leader_count:0, primary_zone_count:0, cur_leader_count:1, candidate_count:1, in_normal_unit_count:1})

日志数据中的各字段含义如下表所示:

参数说明
time该条日志打印的时间。
log_level该条日志的级别。
module_name打印该条日志的语句所在模块。
function_name该条日志的语句所在的函数。
file_name该条日志的语句所在的文件。
file_no该条日志的语句所在文件的具体行数。
thread_id该条日志的线程的线程号。
trace_id0-trace_id1该条日志的 trace_id,由 trace_id0 和 trace_id1 组成,该 trace_id 可通过 RPC 在各个 OBServer 间传递,从而可以根据 trace_id 号来获取相互之间有关联关系的日志数据。
last_log_print_timeOBServer 支持同步日志与异步日志,开启同步日志时,该参数语义表示"上一条日志消耗的时间";开启异步日志时,该参数表示"本条日志格式化的时间"。
dropped_log_count丢掉的日志数量。
log_data具体的日志数据。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论