আমি কীভাবে সাইস্লগে মাইএসকিউএল লগগুলি আউটপুট করব?


13

আমি উবুন্টুতে (10.04 এলটিএস) মাইএসকিউএল (5.1.41) লগ করার জন্য সিসলগ ব্যবহার করতে চাই। আমি তথ্য খুঁজে পেয়েছি যে আউটপুট ত্রুটি syslog এ লগ।

[mysqld_safe]
syslog

তবে আমি সাধারণ লগ এবং ধীর ক্যোয়ারী লগগুলি লগ করার জন্য সিসলগ ব্যবহার করতে চাই। কিভাবে কনফিগারেশন ফাইল লিখতে দয়া করে আমাকে পরামর্শ দিন?

রেফারেন্স ম্যানুয়ালটিতে এটি কীভাবে করব তা আমি খুঁজে পেলাম না।

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


আমি নিশ্চিত যে অনেকেই এই প্রশ্নটি করেছেন। অতএব, এই ক্যুইজিটনটি সর্বজনীনভাবে প্রকাশ করার জন্য আপনি +1 পান।
রোল্যান্ডোমাইএসকিউএলডিবিএ

সতর্কতা : 5.7.5 বানান পরিবর্তন করতে পারে log_syslog
রিক জেমস

উত্তর:


12

এটি আরও সহজভাবে এভাবে করা হয়:

সিডি থেকে মাইএসকিএল ফোল্ডার:

mkfifo mysql-general.log

my.cnf এ এটি বলুন:

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

তারপরে, ফিফো পাইপটি পড়তে আপনার সিসলগ / সিসলগ-এনজি কনফিগার করুন এবং এটি যেমনটি করবেন তেমন করুন ..

আমার ক্ষেত্রে, আমি এটিকে নেট ত্রুটিযুক্ত লগ এবং ধীরে ধীরে কোয়েরি লগগুলি দিয়ে একটি কেন্দ্রীয়ীকৃত সার্ভারে পাইপ দিই।

আপনি স্থানীয় অনুলিপি রাখতে চান এমন পরিস্থিতিতে, কেবল উপরে বর্ণিত হিসাবে এটি টেবিল এবং ফাইলে আউটপুট সেট করুন।


এই পদ্ধতিটি আকর্ষণীয়। একজনকে অবশ্যই তাদের নেটওয়ার্ক ট্র্যাফিকের জন্য প্রস্তুত করতে হবে কারণ সমস্ত কিছু এবং তার দাদী সাধারণ লগে অবতরণ করে। এটি নিশ্চিতভাবে স্যুট এন্টারপ্রাইজ স্থাপন করবে যা প্রতিটি কমান্ড এবং প্রতিটি ইউজারআইড যা লগ ইন করে তা কঠোরভাবে পরীক্ষা করে This এটি একটি +1 !!!
RolandoMySQLDBA

3
ফিফোরও কোনও শ্রোতা প্রোগ্রাম হ'ল দুর্ভাগ্যজনক প্রবণতা রয়েছে যদি সেগুলি খুব বেশি লেখা না হয়। সুতরাং, যদি মাইএসকিউএল এই ফিফোটিতে লেখা বন্ধ করে দেয় তবে সিস্লগও বন্ধ হতে পারে।
স্টিফান লাসিউস্কি

4

ওএস সিসলগ থেকে এই প্রক্রিয়া সম্পূর্ণ আলাদা।

লগ-আউটপুট সেট করা হয় টেবল, ফাইল (ডিফল্ট), বা কোনও হিসাবে সেট করা যেতে পারে

যদি আপনি এটি ব্যবহার

[mysqld]
log-output=TABLE

এটি সাধারণ লগ এবং / অথবা ধীর লগের জন্য সিএসভি ফাইলে যেতে লগিং ঘটায়। আপনি সেই সিএসভিটিকে মাইআইএসএমে রূপান্তর করতে পারেন:

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;

সিসলগ (ভার / লগ / বার্তা) সম্পর্কে কী? আপনাকে অবশ্যই এটি স্ক্রিপ্ট করতে হবে। প্রথমত, আপনার হয় এটির প্রয়োজন:

[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 / সেন্টওএস) ফাইল, এবং সক্ষম মডিউল 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 এর সাথে তুলনা করুন।
ব্যবহারকারী 2066657
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.