日志概述
OceanBase数据库在运行过程中会自动生成日志;通过查看和分析日志,可以了解OceanBase数据库的启动和运行状态
日志名称 | 日志路径 | 说明 |
启动和运行日志(observer.log) | OBServer 服务器的 ~/appname/log 目录下 | OceanBase 数据库所有的启动过程和启动后的运行过程中的日志 |
选举模块日志 (election.log) | OBServer 服务器的 ~/appname/log 目录下 | 选举模块记录的日志 |
RootService日志 (rootservice.log) | OBServer 服务器的 ~/appname/log 目录下 | RootService 模块记录的日志 |
事务/存储日志
日志名称 | 日志路径 | 说明 |
Clog | OBServer服务器的 “~/datadir/clog”目录下 | Commit Log,所有 Partition 共用,日志可能是乱序 的,记录事务、Partition Service 提供的原始日志内容。 此目录下的日志基于 Paxos 协议在多个副本之间同步 (该Clog指代广义的 Commit Log,代表整个事务的 所有日志信息) |
Ilog | OBServer服务器的 “~/datadir/ilog”目 录下 | Index Log,所有 Partition 共用,单 Partition 内部日志有序,记录 Partition 内部log_id->clog(file_id,offset) 的索引信息;每个副本自行记录 |
Slog | OBServer服务器的 “~/datadir/slog”目 录下 | 记录 Storage Log,指 SSTable 操作日志信息 |
事务日志
事务的日志包括:redo log, prepare log, commit log, abort log, clear log等
Redo log记录了事务的具体操作,比如某一行数据的某个字段从A修改为B
Prepare log记录了事务的prepare状态
Commit log表示这个事务成功commit,并记录commit信息,比如事务的全局版本号
Clear log用于通知事务清理事务上下文
Abort log表示这个事务被回滚
Observer日志级别
日志级别 | 含义 |
ERROR | 严重错误。用于记录系统的故障信息,且必须进行故障排除,否则系统不可用 |
USER_ERR | 用户输入导致的错误 |
WARN | 警告。用于记录可能会出现的潜在错误 |
INFO(default) | 提示。用于记录系统运行的当前状态,该信息为正常信息 |
TRACE | 与INFO相比更细致化地记录事件消息 |
DEBUG | 调试信息。用于调试时更详细地了解系统运行状态,包括当前调用的函数名、参数、变量、函数调用返回值等 |
Observer日志格式
日志记录主要组成:记录时间、日志级别、[模块名]、文件名:行号、线程ID和日志内容[time] log_level [module_name] function_name (file_name:file_no)[thread_id][Ytrace_id0-trace_id1] [log=last_log_print_time]log_data
参数 | 说明 |
module_name | 打印该条日志的语句所在模块 |
function_name | 打印该条日志的语句所在的函数 |
file_no | 打印该条日志的语句所在文件的具体行数 |
thread_id | 打印该条日志的线程的线程号 |
trace_id0-trace_id1 | 该条日志的 traceid,由 traceid0 和 traceid1 组成,该 traceid 可通过 RPC 在各个 OBServer 间传递,从而可以根据 traceid 号来获取相互之间有关联关系的日志数据 |
last_log_print_time | 写上一条日志所用的数据,单位为us |
log_data | 具体的日志数据 |
Observer日志注意事项
日志写满256MB时,会做日志文件切换,原日志文件名加上 .%Y%m%d%H%M%S格式的时间
OceanBase默认不会自动清理日志,另外OceanBase可按日志个数回收日志,可通过enable_syslog_recycle、max_syslog_file_count两个参数控制
日志限流控制参数 syslog_io_bandwidth_limit
Warning及以上信息生成单独日志文件控制参数:enable_syslog_wf ,开启后每类文件自动生成一个带有.wf后缀的WARNING日志文件(observer.log.wf、election.log.wf、rootservice.log.wf)
参数 | 说明 | 默认值 |
enable_syslog_recycle | 是否开启回收系统日志的功能 | False |
max_syslog_file_count | 设置在回收日志文件之前可以容纳的日志文件数量 | 0 |
syslog_io_bandwidth_limit | 设置系统日志所能占用的磁盘IO带宽上限,超过带宽上限容量的系统日志将被丢弃 | 30MB |
enable_syslog_wf | 设置是否把 WARN 以上级别的系统日志打印到一个单独的日志文件中 | True |
Observer错误码
OceanBase数据库高度兼容MySQL,这不仅体现在常用MySQL功能及MySQL前后台协议,OceanBase数据库原生的错误信息也对MySQL进行了兼容。OceanBase 数据库MySQL租户的错误信息格式与 MySQL 保持一致
OceanBase数据库的Oracle租户中,错误信息会以前缀 + 数字码的形式返回。例如,如果错误源于数据库,则会返回以ORA开头的错误信息;如果错误源于存储过程,则会返回以PLS开头的错误信息
模式 | 错误格式 | 说明 |
MySQL模式 | ERROR <err_num> (<sql_stat>) : err_msg | err_num表示错误码,sql_stat表示SQL STATE,err_msg表示错误信息 |
Oracle模式 | ORA-<err_num>:<err_msg> | err_num表示兼容Oracle数据库的错误码,err_msg表示错误信息 |
Observer MySQL错误信息范围