मैं सिसलॉग में मायएसक्यूएल लॉग का आउटपुट कैसे लूं?


13

मैं उबंटू (10.04 LTS) पर MySQL (5.1.41) लॉगिंग के लिए syslog का उपयोग करना चाहता हूं। मुझे जानकारी मिली कि आउटपुट त्रुटि लॉग लॉग इन करें।

[mysqld_safe]
syslog

लेकिन मैं सामान्य लॉग और धीमी क्वेरी लॉग को लॉग करने के लिए syslog का उपयोग करना चाहता हूं। कृपया मुझे सलाह दें कि कॉन्फ़िगर फ़ाइल कैसे लिखें?

मैं संदर्भ पुस्तिका में ऐसा नहीं कर पाया।

http://dev.mysql.com/doc/refman/5.1/en/log-destinations.html


मुझे यकीन है कि कई लोगों ने यह सवाल पूछा है। इसलिए, आपको सार्वजनिक रूप से इस quesiton को प्रकट करने के लिए +1 मिलता है।
रोलैंडमाइसीडीडीबीए 22

चेतावनी : 5.7.5 वर्तनी को बदल सकता है log_syslog
रिक जेम्स

जवाबों:


12

यह बहुत अधिक इस तरह से किया जाता है:

सीडी से mysql फ़ोल्डर्स:

mkfifo mysql-general.log

my.cnf में इसे बताएं:

[mysqld]
general-log-file = /path/to/mysql/dir/mysql-general.log

फिर, FIFO पाइप को पढ़ने के लिए अपने syslog / syslog-ng को कॉन्फ़िगर करें और इसके साथ इसे करें ..

मेरे मामले में, मैं इसे नेट पर एक केंद्रीकृत सर्वर पर भेजता हूं जिसमें केवल त्रुटि लॉग और धीमी क्वेरी लॉग होते हैं।

उन परिस्थितियों में जहां आप स्थानीय प्रतिलिपि भी रखना चाहते हैं, बस इसे ऊपर बताए अनुसार तालिका और फ़ाइल में आउटपुट पर सेट करें।


यह विधि ध्वनि पेचीदा है। बस अपने ट्रैफिक की त्रासदी के लिए अपने नेटवर्क को तैयार करना होगा क्योंकि सामान्य लॉग में सब कुछ और उसकी दादी भूमि। यह निश्चित रूप से सूट एंटरप्राइज इंस्टॉलेशन को बढ़ाएगा, जो लॉग में आने वाले हर कमांड और हर यूजर की कड़ी जांच करता है। यह एक +1 है !!!
रोलैंडमाइसीडीडीबीए

3
यदि वे भी नहीं लिखे जा रहे हैं तो किसी भी सुनने के कार्यक्रमों को फ्रीज करने की दुर्भाग्यपूर्ण प्रवृत्ति है। इसलिए, यदि MySQL ने इस फिफो में लिखना बंद कर दिया है, तो syslog भी बंद हो सकता है।
स्टेफान लस्वीस्की

4

वह तंत्र OS syslog से पूरी तरह अलग है।

लॉग-आउटपुट सेट करना या तो टेबल, फ़ाइल (डिफ़ॉल्ट), या एनओएन पर सेट किया जा सकता है

यदि आप इसका उपयोग करते हैं

[mysqld]
log-output=TABLE

यह CSV फ़ाइल में जाने के लिए सामान्य लॉग और / या धीमी लॉग के लिए लॉगिंग का कारण होगा। आप उस CSV को MyISAM में परिवर्तित कर सकते हैं:

SET @old_log_state = @@global.general_log;
SET GLOBAL general_log = 'OFF';
ALTER TABLE mysql.general_log ENGINE = MyISAM;
ALTER TABLE mysql.general_log ADD INDEX (event_time);
SET GLOBAL general_log = @old_log_state;

फिर आप इस फ़ाइल को जबरदस्त रूप से विकसित कर सकते हैं और आपको हर बार तालिका को शुद्ध करना होगा। यहां बताया गया है कि जनरल_लॉग टेबल को कैसे शुद्ध करें और अंतिम 3 दिन रखें:

SET @old_log_state = @@global.general_log;
SET GLOBAL general_log = 'OFF';
CREATE TABLE mysql.general_log_new LIKE mysql.general_log;
INSERT INTO mysql.general_log_new
SELECT * FROM mysql.general_log WHERE event_time > NOW() - INTERVAL 3 DAY;
DROP TABLE mysql.general_log;
ALTER TABLE mysql.general_log_new RENAME mysql.general_log;
SET GLOBAL general_log = @old_log_state;

Syslog (var / log / संदेश) के बारे में क्या? आपको खुद ही स्क्रिप्ट करनी होगी। सबसे पहले, आपको या तो इसकी आवश्यकता है:

[mysqld]
log
log-ouput=TABLE,FILE
general-log-file=/var/log/mysql-general.log

यदि आप सामान्य लॉग को दोनों स्वरूपों में एकत्र करना चाहते हैं या

[mysqld]
log
general-log-file=/var/log/mysql-general.log

सिर्फ फ़ाइल प्रारूप के लिए।

अब /var/log/general.log में परिवर्तन एकत्र करने के लिए एक स्क्रिप्ट बनाएं। स्क्रिप्ट को इस तरह देखना चाहिए:

NEWCOUNT=`wc -l < /var/log/mysql-general.log`
if [ -f /tmp/general-log-lines.txt ]
then
    OLDCOUNT=`cat /tmp/general-log-lines.txt`
    if [ ${OLDCOUNT} -lt ${NEWCOUNT} ]
    then
        DIFF=`echo ${NEWCOUNT}-${OLDCOUNT}|bc`
        tail -${DIFF} < /var/log/mysql-general.log >> /var/log/messages
        echo ${NEWCOUNT} > /tmp/general-log-lines.txt
    fi
fi

इस स्क्रिप्ट को हर मिनट चलाएं। मैं इस तरह हर आधी रात को सामान्य लॉग को रौंदने की सलाह देता हूं

echo -n > /var/log/mysql-general.log

कोशिश करो !!!


4

/Etc/my.cnf में, इसे सेट करें।

[mysqld]
general-log-file = /path/to/mysql/dir/mysql-general.log

/Etc/rsyslog.conf (RHEL / CentOS) फ़ाइल संपादित करें , और मॉड्यूल imfile को पढ़ने के लिए सक्षम करें /path/to/mysql/dir/mysql-general.log और फिर, दूरस्थ syslog सर्वर पर भेजें, इसमें कॉन्फ़िगर किए गए अंतराल का सम्मान करते हुए। पोलिंगइंटरवल पैरामीटर।

इस अनुभाग को नीचे इस तरह दिखना चाहिए:

module(load="imfile" PollingInterval="1")

input(type="imfile"
    File="/path/to/mysql/dir/mysql-general.log"
    stateFile="statefile-mysql-general"
    Tag="mysql-general"
    Severity="warning"
    Facility="local1")

वर्कडायरेक्टरी के साथ लाइन को न करें

$WorkDirectory /var/lib/rsyslog # where to place spool files

और दूरस्थ रूप से सभी लॉग भेजने के लिए इसे कॉन्फ़िगर करें

*.* @@remote-ip:514 ## For TCP Connection

या

 *.* @remote-ip:514 ## For UDP Connection

2
आप स्वयं संपादन /etc/rsyslog.conf से बचना चाहते हैं, और अपने कस्टम ट्यूनिंग को नियंत्रित करने के लिए /etc/rsyslog.d में बनाई गई फ़ाइल का उपयोग कर सकते हैं। ड्रॉप-इन फाइलें अपग्रेड के संबंध में डिस्ट्रो कॉन्फिगर्स के चेक को संरक्षित करती हैं, और अन्य होस्ट को पैकेज और सिंक करने में आसान होती हैं। /Etc/php.d, /etc/sysctl.d और /etc/security/limits.d की तुलना करें।
user2066657 13
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.