AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 415774
Accepted
quanta
quanta
Asked: 2012-08-09 19:15:07 +0800 CST2012-08-09 19:15:07 +0800 CST 2012-08-09 19:15:07 +0800 CST

MySQL 不会在旋转后将错误记录到新文件中?

  • 772

问题已解决,但我正在写下来以备将来参考。

/root/.my.cnf

[mysqladmin]
user            = root
password        = pa$$w0rd

/etc/logrotate.d/mysql

/var/log/mysql-slow.log /var/log/mysqld.log {
    daily
    rotate 7
    dateext
    compress
    missingok
    #notifempty
    sharedscripts
    create 644 mysql mysql
    postrotate
        /usr/bin/mysqladmin flush-logs
    endscript
}

logrotate从命令行运行时工作正常:

# logrotate -v -f /etc/logrotate.d/mysql

但在凌晨 4 点从 cron 运行时它不起作用日志文件已轮换但 MySQL 不会将错误记录到新创建的文件中:

-rw-r--r-- 1 mysql mysql      0 Aug  7 10:13 /var/log/mysqld.log
-rw-r--r-- 1 mysql mysql     20 Aug  4 04:04 /var/log/mysqld.log-20120804.gz
-rw-r--r-- 1 mysql mysql     20 Aug  5 04:04 /var/log/mysqld.log-20120805.gz
-rw-r--r-- 1 mysql mysql     20 Aug  6 16:28 /var/log/mysqld.log-20120806.gz
mysql
  • 5 5 个回答
  • 14569 Views

5 个回答

  • Voted
  1. Best Answer
    quanta
    2012-08-09T19:35:20+08:002012-08-09T19:35:20+08:00

    在 中postrotate,我将 stderr 和 stdout 都重定向到日志文件以查看发生了什么:

    postrotate
        /usr/bin/mysqladmin flush-logs > /var/log/mysqladmin.flush-logs 2>&1
    endscript
    

    我得到的是:

    /usr/bin/mysqladmin: connect to server at 'localhost' failed
    error: 'Access denied for user 'root'@'localhost' (using password: NO)'
    

    听起来好像在 logrotate 期间mysqladmin没有读取。/root/.my.cnf

    所以,试试这个:

    postrotate
        env HOME=/root/ /usr/bin/mysqladmin flush-logs > /var/log/mysqladmin.flush-logs 2>&1
    endscript
    

    资源:

    • http://bugs.mysql.com/bug.php?id=51005
    • http://scribble.scran.ac.uk/svene/weblog/2893.html
    • 12
  2. codewaggle
    2013-01-15T02:28:14+08:002013-01-15T02:28:14+08:00

    我有一个类似的问题。

    添加后我没有重启MySQL /root/.my.cnf,所以没有运行postrotate flush命令。

    一旦我重新启动 MySQL,它就会读取根 my.cnf 文件并按预期工作。

    • 1
  3. Izzy
    2017-01-10T00:33:07+08:002017-01-10T00:33:07+08:00

    在我的例子中,块/etc/logrotate.d/mysql看起来有点不同:

    postrotate
            test -x /usr/bin/mysqladmin || exit 0
    
            if [ -f `my_print_defaults --mysqld | grep -oP "pid-file=\K[^$]+"` ]; then
                # If this fails, check debian.conf!
                mysqladmin --defaults-file=/etc/mysql/debian.cnf flush-logs
            fi
    endscript
    

    请注意注释:“如果失败,请检查 debian.conf!” 和具有参数的命令--defaults-file=/etc/mysql/debian.cnf。该文件具有完全相同的[client]部分,root用空密码定义用户。很明显,在该文件中使用的相同密码/root/.my.cnf也必须放在该文件中。安全方面,/etc/mysql/debian.cnf类似于/root/.my.cnf: 拥有root:root,并更改为0600。

    • 0
  4. shgnInc
    2019-01-27T03:00:30+08:002019-01-27T03:00:30+08:00

    所以,在我的例子中,用户存在权限问题debian-sys-maint,因为galera-cluster每个节点上的完整性都相同,尽管每个节点都由 debian 用户单独安装,配置文件是/etc/mysql/debian.cnf

    所以在logrotate文件中是:

    postrotate
        test -x /usr/bin/mysqladmin || exit 0
        if [ -f `my_print_defaults --mysqld | grep -oP "pid-file=\K[^$]+"` ]; then
            # If this fails, check debian.conf!
            mysqladmin --defaults-file=/etc/mysql/debian.cnf --local flush-error-log \
              flush-engine-log flush-general-log flush-slow-log
        fi
    endscript
    

    解决方法很简单,只需debian-sys-maint在一个节点上更改用户密码,并在每个节点上的 '/etc/mysql/debian.cnf' 文件中设置密码

    SET PASSWORD FOR 'debian-sys-maint'@'localhost' = password('YOUR PASSWORD');
    

    我希望它有用,就像我的一样。

    • 0
  5. Юрий Светлов
    2020-03-22T15:36:33+08:002020-03-22T15:36:33+08:00

    就我而言。我需要设置--defaults-file="/root/.my.cnf"为/root/.my.cnfin /usr/local/mysql/bin/mysqladmin --defaults-file="/root/.my.cnf" pingand/usr/local/mysql/bin/mysqladmin --defaults-file="/root/.my.cnf" flush-logs

    /etc/logrotate.d/mysql

    /var/log/mysql/mysql_general_log.log
    /var/log/mysql/error.log {
            create 600 mysql mysql
            notifempty
            daily
            rotate 5
            missingok
            compress
        postrotate
        # just if mysqld is really running
        if test -x /usr/local/mysql/bin/mysqladmin && \
            /usr/local/mysql/bin/mysqladmin --defaults-file="/root/.my.cnf" ping &>/dev/null
        then
            /usr/local/mysql/bin/mysqladmin --defaults-file="/root/.my.cnf" flush-logs
        fi
        endscript
    }
    

    我/root/.my.cnf有

    -rw------- 1 root root 43 Mar 21 20:51 .my.cnf

    [mysqladmin]
    password= 111
    user= root
    
    • 0

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve