首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >logrotate后未写入MariaDB慢日志

logrotate后未写入MariaDB慢日志
EN

Stack Overflow用户
提问于 2017-11-15 22:29:51
回答 1查看 1.1K关注 0票数 0

我在我们的一台MariaDB服务器上遇到了一个问题。Logrotate在运行时(显然)没有抛出任何错误。在旋转mariadb-slow.log文件之后,MariaDB没有在新的日志文件中写入任何消息。该问题仅影响mariadb-slow.log。

当我从logrotate配置文件的postrotate部分运行mysqladmin命令时,maraidb-slow.log再次被写入。

代码语言:javascript
复制
mysqladmin --defaults-file="/etc/mysql/debian.cnf" --local flush-error-log flush-engine-log flush-general-log flush-slow-log

手动运行logrotate也会导致此问题。

代码语言:javascript
复制
logrotate /etc/logrotate.d/mysql-server

添加-v参数不会显示任何值得注意的内容

代码语言:javascript
复制
logrotate -v /etc/logrotate.d/mysql-server
reading config file /etc/logrotate.d/mysql-server
Reading state from file: /var/lib/logrotate/status
Allocating hash table for state file, size 64 entries
Creating new state
...
Creating new state

Handling 1 logs

rotating pattern: /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/mariadb-slow.log /var/log/mysql/error.log  1024 bytes (7 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/mysql/mysql.log
  log /var/log/mysql/mysql.log does not exist -- skipping
considering log /var/log/mysql/mysql-slow.log
  log /var/log/mysql/mysql-slow.log does not exist -- skipping
considering log /var/log/mysql/mariadb-slow.log
  Now: 2017-11-15 15:02
  Last rotated at 2017-11-15 13:54
  log needs rotating
considering log /var/log/mysql/error.log
  Now: 2017-11-15 15:02
  Last rotated at 2017-11-15 13:54
  log needs rotating
rotating log /var/log/mysql/mariadb-slow.log, log->rotateCount is 7
dateext suffix '-20171115'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/mysql/mariadb-slow.log.7.gz to /var/log/mysql/mariadb-slow.log.8.gz (rotatecount 7, logstart 1, i 7),
renaming /var/log/mysql/mariadb-slow.log.6.gz to /var/log/mysql/mariadb-slow.log.7.gz (rotatecount 7, logstart 1, i 6),
old log /var/log/mysql/mariadb-slow.log.6.gz does not exist
renaming /var/log/mysql/mariadb-slow.log.5.gz to /var/log/mysql/mariadb-slow.log.6.gz (rotatecount 7, logstart 1, i 5),
renaming /var/log/mysql/mariadb-slow.log.4.gz to /var/log/mysql/mariadb-slow.log.5.gz (rotatecount 7, logstart 1, i 4),
renaming /var/log/mysql/mariadb-slow.log.3.gz to /var/log/mysql/mariadb-slow.log.4.gz (rotatecount 7, logstart 1, i 3),
renaming /var/log/mysql/mariadb-slow.log.2.gz to /var/log/mysql/mariadb-slow.log.3.gz (rotatecount 7, logstart 1, i 2),
renaming /var/log/mysql/mariadb-slow.log.1.gz to /var/log/mysql/mariadb-slow.log.2.gz (rotatecount 7, logstart 1, i 1),
renaming /var/log/mysql/mariadb-slow.log.0.gz to /var/log/mysql/mariadb-slow.log.1.gz (rotatecount 7, logstart 1, i 0),
old log /var/log/mysql/mariadb-slow.log.0.gz does not exist
rotating log /var/log/mysql/error.log, log->rotateCount is 7
dateext suffix '-20171115'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/mysql/error.log.7.gz to /var/log/mysql/error.log.8.gz (rotatecount 7, logstart 1, i 7),
renaming /var/log/mysql/error.log.6.gz to /var/log/mysql/error.log.7.gz (rotatecount 7, logstart 1, i 6),
renaming /var/log/mysql/error.log.5.gz to /var/log/mysql/error.log.6.gz (rotatecount 7, logstart 1, i 5),
renaming /var/log/mysql/error.log.4.gz to /var/log/mysql/error.log.5.gz (rotatecount 7, logstart 1, i 4),
renaming /var/log/mysql/error.log.3.gz to /var/log/mysql/error.log.4.gz (rotatecount 7, logstart 1, i 3),
renaming /var/log/mysql/error.log.2.gz to /var/log/mysql/error.log.3.gz (rotatecount 7, logstart 1, i 2),
renaming /var/log/mysql/error.log.1.gz to /var/log/mysql/error.log.2.gz (rotatecount 7, logstart 1, i 1),
renaming /var/log/mysql/error.log.0.gz to /var/log/mysql/error.log.1.gz (rotatecount 7, logstart 1, i 0),
old log /var/log/mysql/error.log.0.gz does not exist
renaming /var/log/mysql/mariadb-slow.log to /var/log/mysql/mariadb-slow.log.1
creating new /var/log/mysql/mariadb-slow.log mode = 0640 uid = 110 gid = 4
renaming /var/log/mysql/error.log to /var/log/mysql/error.log.1
creating new /var/log/mysql/error.log mode = 0640 uid = 110 gid = 4
running postrotate script
compressing log with: /bin/gzip
removing old log /var/log/mysql/mariadb-slow.log.8.gz
compressing log with: /bin/gzip
removing old log /var/log/mysql/error.log.8.gz

logrotate配置文件是来自包维护者的文件。我没有做任何修改。我还尝试了一些其他的东西。

代码语言:javascript
复制
/var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/mariadb-slow.log /var/log/mysql/error.log {
        # daily
        size 1k
        rotate 7
        missingok
        create 640 mysql adm
        compress
        sharedscripts
        postrotate
          test -x /usr/bin/mysqladmin || exit 0
          if [ -f `my_print_defaults --mysqld | grep -m 1 -oP "pid-file=\K.+$"` ]; then
            # If this fails, check debian.conf!
            mysqladmin --defaults-file=/etc/mysql/debian.cnf -v --local flush-error-log \
              flush-engine-log flush-general-log flush-slow-log >> /var/log/mysql-logrotate.log 2>&1
          fi
        endscript
}

在了解了这个问题之后,我只添加了

代码语言:javascript
复制
>> /var/log/mysql-logrotate.log 2>&1

但是mysql-logrotate.log仍然是空的。

使用的软件:操作系统:Debian9.1DB: MariaDB 10.1LogRotate: 3.11.0

EN

回答 1

Stack Overflow用户

发布于 2017-11-20 17:36:24

好的,当我在mysqladmin命令之前将以下代码放入postrotate中时

代码语言:javascript
复制
test -x /usr/bin/mysql || exit 0
          mysql --defaults-file=/etc/mysql/debian.cnf -e "FLUSH SLOW LOGS;"

mariadb-slow.log是轮换的,并且可以在轮换之后写入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47310021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档