रोटेटिंग के बाद MySQL नई फ़ाइल में लॉग इन नहीं करता है?


14

समस्या हल हो गई है लेकिन मैं भविष्य के संदर्भ के लिए लिख रहा हूं।

/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 एएम पर क्रोन से चलने पर यह काम नहीं करता है। लॉग फ़ाइल को घुमाया गया था, लेकिन 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

जवाबों:


12

में 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)'

ऐसा लगता है कि लॉगोटेट के दौरान mysqladminपढ़ा नहीं जाता है /root/.my.cnf

तो, यह प्रयास करें:

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

स्रोत:


1

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था।

मैंने जोड़ने के बाद MySQL को पुनः आरंभ नहीं किया /root/.my.cnf, इसलिए पोस्ट्रोसेट फ्लश कमांड नहीं चलाया गया था।

एक बार जब मैंने MySQL को फिर से शुरू किया तो यह रूट my.cnf फाइल को पढ़ा और उम्मीद के मुताबिक काम किया।


0

मेरे मामले में, ब्लॉक /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, और इसके लिए chmodded है 0600


0

इसलिए, मेरे मामले में, debian-sys-maintउपयोगकर्ता की अनुमति समस्या है , इस वजह से, galera-clusterप्रत्येक नोड पर एक ही अखंडता है, हालांकि, प्रत्येक नोड व्यक्तिगत रूप से स्थापित होता है, प्रत्येक के लिए डेबियन उपयोगकर्ता द्वारा, जो, कॉन्फ़िगर फ़ाइल है/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');

मुझे आशा है, यह उपयोगी होगा, मेरी तरह।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.