TiDB日志配置参数 log-rotate 的两个疑惑

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:

3.0.5

  • 【问题描述】:

计划使用 pt-query-digest 工具每天对TiDB的慢日志做分析,但是在查看TiDB的慢日志的时候发现并不是每天都会创建一个新的日志文件,而是到300MB了就创建一个新的文件。

我特意测试了官方文档中的几个和日志相关的参数。发现了下面的2个问题。

  1. log-rotatemax-daysmax-size 这几个配置,我要通过 tidb.yml 配置然后滚动更新的话,应该配置在什么位置?尝试在 log 下或者自定义的file 、log.file 都是失败的。 这几个配置可以在TiDB节点的 tidb.toml 文件中配置是可以生效的。我打算使用ansible去滚动升级TiDB节点的话应该怎么去做?

  2. 通过tidb.log 日志明确了log-rotate为true的情况下,为什么不会每天创建一个新的日志文件呢?更加合理的逻辑应该是每天创建新的日志文件(包括慢日志),每到300MB就产生一个新的文件吧。首先确保是每天能生成一个新的文件。

按日切分不生效是已知的问题,会在未来版本修复。

3.0.5 暂时将这几个参数去掉了,在 ansible 的 tidb.yml 中配置还是可以生成到 tidb deploy 目录的。

但是我在 ansible 的 tidb.yml 中这样配置的话, tidb deploy 目录下并不会产生 [log.file] max-days=30 这样的配置。是不是我配置写错了?

log:
  # Log level: debug, info, warn, error, fatal.
  # level: "info"

  # Queries with execution time greater than this value will be logged. (Milliseconds)
  slow-threshold: 2000

  # Queries with internal result greater than this value will be logged.
  # expensive-threshold: 10000

log.file:
  max-days: 30

尝试使用这个缩进

log:
  # Log level: debug, info, warn, error, fatal.                                                                
  # level: "info"                                                                                              
 
  # Log format, one of json, text, console.                                                                    
  # format: "text"                                                                                             
 
  # Disable automatic timestamps in output                                                                     
  # disable-timestamp: false                                                                                   
 
  # Queries with execution time greater than this value will be logged. (Milliseconds)                         
  # slow-threshold: 300                                                                                        
 
  # Queries with internal result greater than this value will be logged.                                       
  # expensive-threshold: 10000                                                                                 
 
  # Maximum query length recorded in log.                                                                      
  # query-log-max-len: 2048                                                                                    
 
  # File logging.                                                                                              
  file:
    # Max log file size in MB. (upper limit to 4096MB).                                                        
    # max-size: 300                                                                                            
   
    # Max log file keep days. No clean up by default.                                                          
    # max-days: 0                                                                                              
   
    # Maximum number of old log files to retain. No clean up by default.                                       
    # max-backups: 0                                                                                           
   
    # Rotate log by day                                                                                        
    # log-rotate: true