#日志管理
日志管理章节所述范围为运维相关的日志管理,不包括与数据相关的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会截断 |