在运维过程中,运维工程师可以通过设置日志模块的日志打印级别,从而获取更精确的目标日志。
对于 observer.log 、election.log 和 rootservice.log 日志文件,日志打印级别可通过系统级别、Session 级别和语句级别三个级别进行设置。打印日志时,优先级从高到低分依次为语句级别、Session 级别、系统级别。
系统级别:作用范围为整个集群所有 OBServer。仅支持在系统租户下配置。
Session 级别:作用范围为当前租户在集群内所在的 OBServer。
设置 Session 级别的变量仅对当前 Session 有效,对其他 Session 无效。
设置 Global 级别的变量对当前 Session 无效,需要重新登录建立新的 Session 才会生效。
语句级别:作用范围为当前执行语句所在的 OBServer。只在 SQL 语句执行期间生效。
以下为通过系统级别、Session 级别和语句级别三个级别对日志打印级别进行设置的具体方法。
通过系统级别设置日志模块的级别。可通过如下两种方式进行设置:
通过系统配置项
syslog_level设置系统级别的日志级别。例如:设置 SQL 模块的日志级别为debug,设置 COMMON 模块的日志级别为error。obclient > ALTER SYSTEM SET syslog_level='sql.*:debug, common.*:error';通过操作系统 bash
kill -41/42$pid 命令设置系统级别的日志级别。kill -41用于降低程序日志的级别。例如:当前程序日志的级别为 INFO ,执行kill -41后,则级别降低至 TRACE 。kill -42用于升高程序日志的级别。例如:当前程序日志的级别为 INFO ,执行kill -42后,则级别升高至 WARN 。
推荐通过系统配置项
syslog_level设置系统级别的日志级别。因为 OceanBase 数据库在刷新 config 时,会导入 config 中配置的ob_log_level,导致 kill 方式失效。通过 Session 级别设置日志模块的级别。
通过系统变量
ob_log_level设置 Session 级别的日志级别。例如:设置 SQL 模块的日志级别为debug,设置 COMMON 模块的日志级别为info。obclient > SET @@ob_log_level='sql.*:debug, common.*:info';通过语句级别设置日志模块的级别。
可以通过 Hint 设置语句级别的日志级别。例如:设置 SQL 模块的日志级别为
debug,设置 COMMON 模块的日志级别为info。更多 Hint 语句相关的介绍,请参见 Optimizer Hint。obclient > SELECT /*+log_level('sql.*:debug, common.*:info')*/ * FROM t;说明
如果使用 MySQL 的 C 客户端执行带 Hint 的 SQL 语句,需要使用
-c选项登录,否则 MySQL 客户端会将 Hint 作为注释从用户 SQL 语句中去除,导致系统无法收到用户 Hint。




