MySQL-এর সাথে ক্লায়েন্ট লগিং সম্পর্কে বুঝি। mysql ক্লায়েন্ট এক্সিকিউট করা স্টেটমেন্টগুলো জন্য ভিন্ন ভিন্ন ধরনের লগিং করতে পারে, এবং এটি ইন্টারঅ্যাক্টিভলি করা যায়:
ইউনিক্স - লগিং
ইউনিক্সে, mysql স্টেটমেন্টগুলো একটি হিস্টরি ফাইলে লেখে। ডিফল্টভাবে এই ফাইলটির নাম .mysql_history থাকে ব্যবহারকারীর হোম ডিরেক্টরিতে। ভিন্ন ফাইল নাম নির্দিষ্ট করতে MYSQL_HISTFILE এনভায়রনমেন্ট ভেরিয়েবলের মান সেট করতে হয়।
যদি --syslog অপশন দেওয়া হয়, তবে mysql সকল প্ল্যাটফর্মে সিস্টেম লগিং ফ্যাসিলিটিতে স্টেটমেন্টগুলো লিখবে। ইউনিক্সে এটিকে syslog নামে জানা হয়।
উইন্ডোজ - লগিং
উইন্ডোজে, এটিকে উইন্ডোজ ইভেন্ট লগ নামে জানা হয়। লগ করা মেসেজগুলো কোথায় প্রদর্শিত হবে সেটি সিস্টেমের ওপর নির্ভর করে। উদাহরণস্বরূপ, লিনাক্সে ডেস্টিনেশন সাধারণত /var/log/messages ফাইল।
লগিং কীভাবে হয়?
লগিং কীভাবে হয় তা বুঝি:
প্রতিটি সক্রিয় লগিং ডেস্টিনেশনের জন্য, স্টেটমেন্ট লগিং নিচের মতো হয়:
স্টেটমেন্টগুলো শুধু তখন লগ করা হয় যখন সেগুলো ইন্টারঅ্যাক্টিভলি এক্সিকিউট হয়। স্টেটমেন্টগুলো নন-ইন্টারঅ্যাক্টিভ হয় যখন সেগুলো একটি ফাইল বা পাইপ থেকে পড়া হয়।
--batchবা--executeঅপশন দিয়ে স্টেটমেন্ট লগিং অপারেশন দমন করা সম্ভব।স্টেটমেন্টগুলো উপেক্ষা করা হয় এবং লগ করা হয় না যদি সেগুলো "ignore" লিস্টে থাকা প্যাটার্নের সাথে ম্যাচ করে।
mysql প্রতিটি নন-ইগনোরড, নন-এম্পটি স্টেটমেন্ট লাইনকে ইনডিভিডুয়ালি লগ করে।
যদি একটি নন-ইগনোরড স্টেটমেন্ট একাধিক লাইনে फैলে থাকে, যেটি টার্মিনেটিং ডিলিমিটার অন্তর্ভুক্ত করে না, তবে mysql লাইনগুলো কনক্যাটেনেট করে একটি সম্পূর্ণ স্টেটমেন্ট বানাবে, নিউলাইনগুলো স্পেসে ম্যাপ করবে, এবং ডিলিমিটারসহ ফলাফল লগ করবে।