আমি কীভাবে মাইএসকিউএল ফাংশন সক্ষম করব যা ক্লায়েন্টদের কাছ থেকে প্রাপ্ত প্রতিটি এসকিউএল কোয়েরি স্টেটমেন্ট এবং যে প্রশ্নের বিবৃতি জমা দিয়েছে তার সময় লগ করে? আমি কি phpmyadmin বা নাভিগেটে এটি করতে পারি? আমি লগ কিভাবে বিশ্লেষণ করব?
আমি কীভাবে মাইএসকিউএল ফাংশন সক্ষম করব যা ক্লায়েন্টদের কাছ থেকে প্রাপ্ত প্রতিটি এসকিউএল কোয়েরি স্টেটমেন্ট এবং যে প্রশ্নের বিবৃতি জমা দিয়েছে তার সময় লগ করে? আমি কি phpmyadmin বা নাভিগেটে এটি করতে পারি? আমি লগ কিভাবে বিশ্লেষণ করব?
উত্তর:
প্রথমে মনে রাখবেন যে ব্যস্ত সার্ভারে এই লগফিলটি খুব বড় হতে পারে।
মাইএসকিএলের জন্য <5.1.29:
ক্যোয়ারী লগ সক্ষম করতে, /etc/my.cnf
এটি [mysqld]
বিভাগে রাখুন
log = /path/to/query.log #works for mysql < 5.1.29
এছাড়াও, এটি মাইএসকিউএল কনসোল থেকে সক্ষম করতে
SET general_log = 1;
Http://dev.mysql.com/doc/refman/5.1/en/query-log.html দেখুন
Mysql 5.1.29+ এর জন্য
Mysql 5.1.29+ সহ, log
বিকল্পটি হ্রাস করা হয়। লগফিল নির্দিষ্ট করতে এবং লগিং সক্ষম করতে, [mysqld]
বিভাগে এটি my.cnf এ ব্যবহার করুন :
general_log_file = /path/to/query.log
general_log = 1
পর্যায়ক্রমে, মাইএসকিউএল কনসোল থেকে লগিং চালু করতে (অবশ্যই কোনওরকম লগ ফাইলের অবস্থান নির্দিষ্ট করতে হবে, বা ডিফল্ট অবস্থানটি সন্ধান করতে হবে):
SET global general_log = 1;
এছাড়াও মনে রাখবেন যে কেবল ধীর অনুসন্ধানগুলি লগ করার জন্য অতিরিক্ত বিকল্প রয়েছে বা যা সূচকগুলি ব্যবহার করে না।
SET global general_log_file='c:/Temp/mysql.log';
SET global general_log = on;
SET global log_output = 'file';
সম্পর্কিত আরও একটি প্রশ্নের এই উত্তরটি একবার দেখুন। এটি দেখায় যে কীভাবে পুনরায় আরম্ভ না করে লাইভ সার্ভারগুলিতে লগগুলি সক্ষম, অক্ষম করতে এবং দেখতে হয়।
Mysql- এ সমস্ত প্রশ্নগুলি লগ করুন
এখানে একটি সংক্ষিপ্তসার দেওয়া হল:
আপনি যদি না চান বা মাইএসকিউএল সার্ভারটি পুনরায় আরম্ভ করতে না পারেন আপনি নিজের চলমান সার্ভারে এভাবে এগিয়ে যেতে পারেন:
আপনার লগ টেবিল তৈরি করুন ( উত্তর দেখুন )
ডাটাবেসটিতে ক্যোয়ারী লগিং সক্ষম করুন (নোট করুন যে স্ট্রিং 'টেবিল' অক্ষরে অক্ষরে রাখা উচিত এবং কোনও সারণীর নাম দ্বারা প্রতিস্থাপন করা উচিত নয় Thanks ধন্যবাদ নিকোলাস পিকিংিং )
SET global general_log = 1;
SET global log_output = 'table';
select * from mysql.general_log;
SET global general_log = 0;
লগিংয়ের জন্য আমি এই পদ্ধতিটি ব্যবহার করি যখন আমি বিভিন্ন পৃষ্ঠা লোডগুলি দ্রুত অনুকূল করতে চাই। এটি একটু টিপস ...
একটি টেবিল লগ ইন
SET global general_log = 1;
SET global log_output = 'table';
তারপরে আপনি mysql.general_log
সাম্প্রতিক প্রশ্নগুলি পুনরুদ্ধার করতে আমার টেবিল থেকে নির্বাচন করতে পারেন ।
আমি তখন tail -f
mysql.log এ অনুরূপ কিছু করতে পারি , তবে আরও পরিমার্জন সহ ...
select * from mysql.general_log
where event_time > (now() - INTERVAL 8 SECOND) and thread_id not in(9 , 628)
and argument <> "SELECT 1" and argument <> ""
and argument <> "SET NAMES 'UTF8'" and argument <> "SHOW STATUS"
and command_type = "Query" and argument <> "SET PROFILING=1"
এটি আমার জিজ্ঞাসাগুলি দেখতে সহজ করে তোলে যা আমি চেষ্টা করতে এবং পিছনে কাটাতে পারি। আমি 8 সেকেন্ডের ব্যবধানটি শুধুমাত্র শেষ 8 সেকেন্ডের মধ্যেই কার্যকর করা ক্যারিগুলি আনার জন্য ব্যবহার করি।
এটি ইতিমধ্যে একটি মন্তব্যে ছিল, তবে এটির নিজস্ব জবাব প্রাপ্য: কনফিগার ফাইলগুলি সম্পাদনা না করে: মাইএসকিএল-এ, মূল হিসাবে, করুন
SET global general_log_file='/tmp/mysql.log';
SET global log_output = 'file';
SET global general_log = on;
এটি পরে বন্ধ করতে ভুলবেন না:
SET global general_log = off;
/tmp/
, তবে এটি কোথাও শেষ হতে পারে/tmp/systemd-private-...-mariadb.service-.../tmp/
আপনি সাধারণ ক্যোয়ারী লগটি অক্ষম করতে বা সক্ষম করতে পারেন (যা সমস্ত প্রশ্নের লগ করে)
SET GLOBAL general_log = 1 # (or 0 to disable)
আমি মাইএসকিউএল লগ ফাইলটি জিজ্ঞাসাগুলি সক্রিয় করতে সক্ষম করতে চেয়েছিলাম এবং এটি নীচের নির্দেশাবলীর সাথে সমাধান করেছি
/etc/mysql/mysql.conf.d
এবং নীচের লাইনগুলি সক্ষম করুন
general_log_file = /var/log/mysql/mysql.log
general_log = 1
/etc/init.d/mysql restart
/var/log/mysql/
লগগুলিতে যান এবং পরীক্ষা করুন// To see global variable is enabled or not and location of query log
SHOW VARIABLES like 'general%';
// Set query log on
SET GLOBAL general_log = ON;
উইন্ডোজ আপনি কেবল যেতে পারেন
C:\wamp\bin\mysql\mysql5.1.53\my.ini
এই লাইনটি my.ini sertোকান
general_log_file = c:/wamp/logs/mysql_query_log.log
My.ini ফাইল পরিশেষে ভালো দেখায়
...
...
...
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir=c:/wamp/bin/mysql/mysql5.1.53
log = c:/wamp/logs/mysql_query_log.log #dump query logs in this file
log-error=c:/wamp/logs/mysql.log
datadir=c:/wamp/bin/mysql/mysql5.1.53/data
...
...
...
...
মাইএসকিউএল 5.6 সংস্করণে বাগ রয়েছে। এমনকি মাইএসকিএলডি শো হিসাবে:
Default options are read from the following files in the given order:
C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.ini c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.cnf
রিলে সেটিংস নিম্নলিখিত ক্রমে পড়ছে:
Default options are read from the following files in the given order:
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.ini c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.cnf
ফাইলটি পরীক্ষা করুন: "সি: \ প্রোগ্রামডেটা \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.6 \ my.ini"
আশা করি এটি কারও সাহায্য করবে।
জন্য MySQL> = 5.5 শুধুমাত্র ধীর জিজ্ঞাসার জন্য (1 দ্বিতীয় ও বেশি) my.cfg
[mysqld]
slow-query-log = 1
slow-query-log-file = /var/log/mysql/mysql-slow.log
long_query_time = 1
log-queries-not-using-indexes
ম্যাক মেশিনে ক্যোয়ারী লগ সক্ষম করতে:
নিম্নলিখিত ফাইলটি খুলুন:
vi /private/etc/my.cnf
নিম্নলিখিত হিসাবে 'mysqld' বিভাগের অধীনে কোয়েরি লগ url সেট করুন:
[mysqld]
general_log_file=/Users/kumanan/Documents/mysql_query.log
কয়েকটি মেশিন সঠিকভাবে কোয়েরি লগ করছে না, সুতরাং সেই ক্ষেত্রে আপনি এটি মাইএসকিউএল কনসোল থেকে সক্ষম করতে পারবেন
mysql> SET global general_log = 1;
প্রশ্নের ঠিক উত্তর নয় কারণ প্রশ্নটির ইতিমধ্যে দুর্দান্ত উত্তর রয়েছে। এটি একটি পার্শ্ব সম্পর্কিত তথ্য। জেনারেল_লগ সক্ষম করা মাইএসকিউএল সম্পাদনাকে সত্যই ডেন্ট লাগিয়েছে। আমি general_log =1
দুর্ঘটনাক্রমে একটি প্রোডাকশন সার্ভারে চলে এসেছি এবং অন্যান্য সার্ভারগুলিতে অনুরূপ সেটআপের তুলনায় পারফরম্যান্স কেন তুলনীয় নয় তা অনুসন্ধান করতে ঘন্টা ব্যয় করেছি। তারপরে আমি এটি পেয়েছি যা সাধারণ লগ সক্ষম করার প্রভাব ব্যাখ্যা করে। http://www.fromdual.com/general_query_log_vs_mysql_performance ।
গল্পের সারকথা, দিল কি general_log=1
মধ্যে .cnf
ফাইল। পরিবর্তে set global general_log =1
একটি সংক্ষিপ্ত সময়কালের জন্য ব্যবহার করুন আপনি যা অনুসন্ধান করার চেষ্টা করছেন তা সন্ধান করার জন্য যথেষ্ট লগইন করুন এবং তারপরে এটি বন্ধ করুন।
পিএইচপিএমওয়াইডমিন 4.0 এ, আপনি স্থিতি> মনিটরে যান। সেখানে আপনি ধীর ক্যোয়ারী লগ এবং সাধারণ লগ সক্ষম করতে পারেন, একটি সরাসরি মনিটর দেখতে পারেন, গ্রাফের একটি অংশ নির্বাচন করতে পারেন, সম্পর্কিত অনুসন্ধানগুলি দেখুন এবং তাদের বিশ্লেষণ করুন।
আমাকে এক পর্যায়ে সাধারণ লগটি ড্রপ এবং পুনরায় তৈরি করতে হয়েছিল। বিনোদনের সময়, চরিত্র সেটগুলি গণ্ডগোল পেয়েছে এবং লগগুলিতে এই ত্রুটিটি পেয়ে আমি শেষ করেছি:
[ERROR] Incorrect definition of table mysql.general_log: expected the type of column 'user_host' at position 1 to have character set 'utf8' but found character set 'latin1'
সুতরাং "লগিং নিশ্চিত করার জন্য চেক করুন" এর স্ট্যান্ডার্ড উত্তরটি যদি আপনার পক্ষে কাজ করে না, তবে আপনার ক্ষেত্রগুলিতে সঠিক চরিত্রের সেট রয়েছে কিনা তা পরীক্ষা করে দেখুন।