暂无图片
暂无图片
9
暂无图片
暂无图片
暂无图片

OceanBase设置日志打印级别

2023-03-20
848

在运维过程中,运维工程师可以通过设置日志模块的日志打印级别,从而获取更精确的目标日志。

对于 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。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论