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.wf、election.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_time | OBServer 支持同步日志与异步日志,开启同步日志时,该参数语义表示"上一条日志消耗的时间";开启异步日志时,该参数表示"本条日志格式化的时间"。 |
| dropped_log_count | 丢掉的日志数量。 |
| log_data | 具体的日志数据。 |




