में सभी प्रश्नों को लॉग इन करें क्या मेरे लिए मेरे mysql डेटाबेस पर ऑडिट लॉगिंग चालू करना संभव है?mysql
मैं मूल रूप से एक घंटे के लिए सभी प्रश्नों की निगरानी करना चाहता हूं, और लॉग को फ़ाइल में डंप करना चाहता हूं। --log विकल्प के साथ
में सभी प्रश्नों को लॉग इन करें क्या मेरे लिए मेरे mysql डेटाबेस पर ऑडिट लॉगिंग चालू करना संभव है?mysql
मैं मूल रूप से एक घंटे के लिए सभी प्रश्नों की निगरानी करना चाहता हूं, और लॉग को फ़ाइल में डंप करना चाहता हूं। --log विकल्प के साथ
प्रारंभ mysql:
mysqld --log=log_file_name
या अपने my.cnf
फ़ाइल में निम्न जगह:
log = log_file_name
या तो एक सभी प्रश्नों log_file_name को प्रवेश करेंगे।
आप --log
के बजाय --log-slow-queries
विकल्प का उपयोग करके केवल धीमे प्रश्नों को लॉग भी कर सकते हैं। डिफ़ॉल्ट रूप से, 10 सेकंड या उससे अधिक समय लेने वाले प्रश्नों को धीमा माना जाता है, आप long_query_time
को लॉग इन करने से पहले निष्पादित करने के लिए किसी क्वेरी को कितनी सेकंड लेनी चाहिए, इसे सेट करके इसे बदल सकते हैं।
+1 के बारे में नहीं जानते थे। इसके बजाय प्रयुक्त ट्रिगर्स। –
इसे बिना कहने के जाना चाहिए, लेकिन इसे एक उत्पादन बॉक्स में चालू करना बहुत ही मनोरंजक होने के कारण हवाओं को बंद कर देता है। * जी * – ceejayoz
यदि आपको इस तरीके से लॉगिंग सक्षम करने में समस्या है, तो यह जांचें कि mysql उपयोगकर्ता उचित फ़ाइल स्थान पर लिख सकता है। –
आपको अवगत होना चाहिए कि MySQL लॉगिंग वास्तव में प्रदर्शन को प्रभावित करती है, लेकिन यह करने के लिए एक बुद्धिमान बात हो सकती है।
मैं आमतौर पर यह देव सर्वर पर पर छोड़
(नोट (जब यह हमारे ड्राइव पागल :) छोड़कर): के लिए mysql-5.6 + इस काम नहीं करेगा वहाँ mysql पर लागू होने वाला एक समाधान है। -5.6+ अगर आप scroll down या click here)
आप नहीं चाहते या MySQL सर्वर आप अपने चल रहे सर्वर पर इस तरह आगे बढ़ सकते हैं पुनः आरंभ नहीं कर सकते:।
CREATE TABLE `slow_log` (
`start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
`user_host` mediumtext NOT NULL,
`query_time` time NOT NULL,
`lock_time` time NOT NULL,
`rows_sent` int(11) NOT NULL,
`rows_examined` int(11) NOT NULL,
`db` varchar(512) NOT NULL,
`last_insert_id` int(11) NOT NULL,
`insert_id` int(11) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`sql_text` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
CREATE TABLE `general_log` (
`event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
`user_host` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`command_type` varchar(64) NOT NULL,
`argument` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
SET global general_log = 1;
SET global log_output = 'table';
select * from mysql.general_log
SET global general_log = 0;
मुझे यकीन नहीं है कि यह MySQL के प्रत्येक संस्करण (मैं 5.5 पर हूं) के लिए सच है, लेकिन मुझे टेबल बनाने की आवश्यकता नहीं थी। मैंने टेबल का निर्माण करने के लिए एक ही सलाह का पालन किया, जिसका उल्लेख यहां दिया गया है: http://stackoverflow.com/a/678310/135101 –
शायद यह पहले से ही एक या अन्य कारणों से बनाया गया था, @TylerCollier –
यह ध्यान दिया जाना चाहिए कि ' तालिका के आदेशों को बनाना चाहिए (यदि टेबल पहले से मौजूद नहीं हैं) को 'mysql' डेटाबेस पर निष्पादित किया जाना चाहिए, किसी भी उपयोगकर्ता द्वारा बनाए गए डेटाबेस पर नहीं। शायद एसक्यूएल स्टेटमेंट को प्रतिबिंबित करने के लिए अपडेट किया जा सकता है। –
रिकॉर्ड, general_log के लिए पर प्रवेश और slow_log 5.1.6 में पेश किया गया:
http://dev.mysql.com/doc/refman/5.1/en/log-destinations.html
5.2.1। सामान्य क्वेरी और धीमी क्वेरी लॉग आउटपुट गंतव्यों का चयन
MySQL 5.1 के रूप में।6, MySQL सर्वर सामान्य क्वेरी लॉग और धीमी क्वेरी लॉग, पर आउटपुट के गंतव्य पर लचीला नियंत्रण प्रदान करता है, यदि वे लॉग सक्षम हैं। लॉग प्रविष्टियों के लिए संभव स्थलों लॉग फाइल या mysql में general_log और slow_log टेबल डेटाबेस
क्या मैं भर में आया था, चल निम्नलिखित को पुन: प्रारंभ बिना एक लॉग फ़ाइल के लिए क्वेरी डंप करने के लिए सबसे आसान तरीका था इसके अलावा रहे हैं
SET global log_output = 'FILE';
SET global general_log_file='/Applications/MAMP/logs/mysql_general.log';
SET global general_log = 1;
SET global general_log = 0;
शीर्ष जवाब के साथ बंद किया जा सकता mysql में काम नहीं करता 5.6+। अपने my.cnf/my.ini फ़ाइल
Ubuntu/डेबियन में
[mysqld]
general_log = on
general_log_file=/usr/log/general.log
: बजाय इसका उपयोग /etc/mysql/my.cnf
विंडोज: सी: \ ProgramData \ MySQL \ MySQL सर्वर 5.x
WAMP: c: \ WAMP \ बिन \ mysql \ mysqlx.yz \ my.ini
XAMPP: c: \ XAMPP \ mysql \ बिन \ my.ini।
यदि आपने इसका उपयोग किया है, तो क्या आप मुझे ऊपर के प्रदर्शन प्रभाव बता सकते हैं, और क्या इस तरह लॉगिंग सक्षम करना बुद्धिमान होगा? –
रमेश प्रदर्शन प्रभाव प्रदर्शन में लगभग 5-15% की कमी प्रतीत होता है। यहां अधिक जानकारी https://www.percona.com/blog/2009/02/10/impact-of-logging-on-mysql%E2%80%99s-performance/ – Firze
मुझे समझ में नहीं आता क्यों MySQL 5.6 नहीं करता है ' लॉग फ़ाइल को प्रश्नों से सेट करने की अनुमति नहीं है? MySQL 5.6 में सभी प्रश्नों को लॉग इन करने के लिए और बाद में जब आपके पास सर्वर निर्देशिका पेड़ तक पहुंच नहीं है लेकिन केवल 'phpMyAdmin' है? –
MySQL सामान्य क्वेरी लॉग को पुनरारंभ किए बिना सक्षम करने का त्वरित तरीका।
mysql> SET GLOBAL general_log = 'ON';
mysql> SET GLOBAL general_log_file = '/var/www/nanhe/log/all.log';
मैं homebrew के माध्यम से mysql स्थापित किया है, mysql संस्करण: mysql वर 14.14 Distrib 5.7.15, osx10.11 (x86_64) के लिए उपयोग कर EditLine एडब्ल्यूएस आरडीएस MYSQL, द्वारा कदम का उपयोग कर आवरण
मामले में यहां कदम गाइड।
जब 'फ़ाइल' आउटपुट के रूप में सेट किया जाता है तो आप सीधे एडब्ल्यूएस आरडीएस "लॉग" कंसोल से लॉग देख सकते हैं।
तालिका
के लिए लॉगmysql> SET GLOBAL general_log = 'ON';
mysql> SET global log_output = 'table';
लॉग देखें द्वारा चयन क्वेरी
select * from mysql.general_log
क्या सभी टेबल लॉग इन करने के लिए वाइल्डकार्ड है? (काफी कुछ हैं: सी) – RicardoE
डुप्लीकेट प्रश्न http://stackoverflow.com/q/650238/684229 – TMS
पाठकों के लिए सक्षम करें लाभ: उपरोक्त टिप्पणी में प्रश्न पढ़ने के लिए याद मत करो। – claws
आप यहां पोस्ट किए गए मेरे मौजूदा उत्तर को http://dba.stackexchange.com/a/62477/6037 –