#日志管理

日志管理章节所述范围为运维相关的日志管理,不包括与数据相关的redo/归档日志,对于redo/归档日志的管理将在文件管理章节描述。

# 日志分类

YashanDB的运维类日志分类如下:

  • 运行日志run log:运行日志记录了数据库各服务运行产生的轨迹信息、调试信息、状态变迁、未产生影响的潜在问题和直接的错误信息。
  • 告警日志alert log:当数据库发生死锁、表空间满、网络断连、坏块等错误时,会处于“带病运行”的状态,运维人员应该及时知道这些信息并作出处理。通过数据库在告警日志中发出告警(上报告警事件),运维人员定时检查告警日志,可以防患于未然,时刻了解和维护系统的运行状况。YashanDB包含的所有告警事件信息见参考手册告警事件
  • 监听日志listen log:当数据库遭遇连接风暴等问题时,需要查看连接来源定位原因,监听日志会向运维人员提供连接状态和频率等信息。
  • 慢日志slow log:慢日志全称为慢查询日志(Slow Query Log),主要用于记录在数据库中执行时间超过指定时间的SQL语句,可选择输出到日志文件或系统表。通过慢查询日志,可以查找出哪些语句的执行效率低,以便进行优化。
  • 代理程序日志yex_server.log:代理程序日志记录了外置UDF代理程序服务运行产生的轨迹信息、调试信息、状态变迁、未产生影响的潜在问题和直接的错误信息。

下表列示了上述日志对应的文件信息:

日志文件 日志内容 说明
$YASDB_HOME/log/集群名/node-nodeid/run/run.log 运行日志 1.安装时默认按此路径及名称创建
2.可通过RUN_LOG_FILE_PATH参数修改文件路径,若路径不存在则会自动创建,需保证用户对该路径拥有相应权限
3.文件名称不可修改
$YASDB_DATA/log/alert/alert.log 告警日志 1.安装时默认按此路径及名称创建
2.文件路径不可修改
3.文件名称不可修改
$YASDB_DATA/log/listener/listener.log 监听日志 1.安装时默认按此路径及名称创建
2.文件路径不可修改
3.文件名称不可修改
$YASDB_HOME/log/集群名/node-nodeid/slow/slow.log 慢查询日志 1.安装时默认按此路径及名称创建
2.可通过SLOW_LOG_FILE_PATH参数修改文件路径,若路径不存在则会自动创建,需保证用户对该路径拥有相应权限
3.可通过SLOW_LOG_FILE_NAME参数修改文件名称
4.输出方式为FILE时记入此文件,为TABLE时记入系统表
$YASDB_DATA/log/external/server/yex_server.log 代理程序日志 1.安装时默认按此路径及名称创建
2.文件路径不可修改
3.文件名称不可修改

# 日志归档

下表列示了YashanDB支持日志归档的情况:

日志类型 支持情况
运行日志 支持
告警日志 不支持
监听日志 不支持
慢日志 不支持
代理程序日志 支持

Caution

对于不支持归档的日志,数据库管理员应该对其设置定期清理策略,避免占满磁盘空间。

# 运行日志归档

当运行日志文件达到RUN_LOG_FILE_SIZE(默认为20M)后,将进行归档并创建一个新的日志文件,归档的日志文件命名为原日志文件名+时间后缀,如:run/run-20211213151402.log。

# 代理程序日志归档

当代理程序日志文件达到16M后,将进行归档并创建一个新的日志文件,归档的日志文件命名为原日志文件名+时间后缀,如:external/server/yex_server20211213151402.log。

# 日志格式

# 运行日志文件内容格式

格式为:日期+时间+[级别]+[模块]+日志信息。如下:

2021-12-13 14:51:23.342 [INFO] [TABLESPACE] succeed to create tablespace SYSTEM
2021-12-13 14:53:18.559 [WARN] [CKPT] checkpoint not complete
2021-12-13 14:53:22.483 [DEBUG] [HA] send redo from point 0-5-12840-18360, size 278528, standby 1, next send point 0-5-12908-18373

日志级别

YashanDB运行日志支持不同级别的日志管理,并根据配置打印不同级别的日志:

级别 描述
OFF 关闭日志
FATAL 致命错误产生的日志
ERROR 一般错误产生的日志
WARN 告警类错误产生的日志
INFO 正常运行日志(默认日志级别)
DEBUG 调试日志级别
TRACE 追踪日志
ALL 所有日志

从上到下,日志等级依次增高,高日志级别包含低日志级别。

# 告警日志文件内容格式

格式为:TimeStamp | Session ID | Event Name | Object | Action | content |Event Escription。各字段说明见下表:

字段 类型 说明
TimeStamp timestamp 产生告警的时间
Session ID uint16 产生告警的会话ID
Event Name text 告警类型名称
Object uint16 产生告警的对象ID
* Object和Event Name一起构成告警的唯一标识符
* 有些告警并不需要Object信息,则该值为0
Action int 告警状态:
* 0:产生告警
* 1:告警消除
Content text 对该告警的其他附带信息
Description text 供用户进一步了解告警的详细信息

# 监听日志文件内容格式

日志格式示例如下:

2023-08-02 09:47:26.143 protocal = TCP  ip = fc00:7::126 port = 14526 user = SYS status = SUCCESS
2023-08-02 09:47:26.151 protocal = TCP  ip = fc00:7::126 port = 14528 user = SYS status = SUCCESS
2023-08-02 09:50:42.005 protocal = TCP  ip = fc00:7::126 port = 14650 user = SYS status = SUCCESS
2023-08-02 09:51:34.354 protocal = TCP  ip = fc00:7::126 port = 44058 user = REGRESS status = ERROR
2023-08-02 09:54:32.526 protocal = TCP  ip = fc00:7::126 port = 14656 user = SYS status = SUCCESS
2023-08-02 09:56:32.126 protocal = IPC  user = SYS status = SUCCESS

格式为:

TimeStamp | Protocal | Ip | Port | User | Status

字段 说明
TimeStamp 产生监听记录的时间
Protocal 链路类型
* TCP:TCP连接
* IPC: IPC连接
Ip 客户端IP
Port 客户端PORT
User 连接用户
Status 连接状态
* SUCCESS:连接成功
* ERROR:连接失败

# 慢日志内容格式

慢日志文件格式

示例如下:

# TIME: 2022-11-18 20:51:30.374
# USER_HOST: SYS@127.0.0.1
# DB_NAME: test_base1
# COST_EXECUTE_TIME: 0.000119
# COST_OPTIMIZE_TIME: 0.000040
# ROWS_SENT: 1
# SQL_ID: 3jd5aq4g9t7gf
SQL: select * from v$parameter where name = 'SLOW_LOG_SQL_MAX_LEN'

格式为:

字段 说明
TIME 打印该条慢SQL信息的时间
USER_HOST 执行SQL时的连接信息
DB_NAME 使用的数据库名称
COST_EXECUTE_TIME SQL执行花费的时间,单位为秒
COST_OPTIMIZE_TIME SQL优化计划阶段花费的时间,单位为秒
ROWS_SENT 返回的行数
SQL_ID SQL ID

慢日志系统表格式

慢日志系统表名为SLOW_LOG$,表结构定义如下:

列名 说明
DATABASE_NAME 数据库名称
USER_NAME 用户名
START_TIME 日志记录时的时间,非执行开始时间
USER_HOST 连接IP
QUERY_TIME 执行时间
ROWS_SENT 查询返回的行数
SQL_ID SQL的ID值
SQL_TEXT SQL语句,超过2000会截断