ওএস সিসলগ থেকে এই প্রক্রিয়া সম্পূর্ণ আলাদা।
লগ-আউটপুট সেট করা হয় টেবল, ফাইল (ডিফল্ট), বা কোনও হিসাবে সেট করা যেতে পারে
যদি আপনি এটি ব্যবহার
[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
একবার চেষ্টা করে দেখো !!!