আমি কীভাবে লাইভ মাইএসকিউএল কোয়েরি দেখতে পারি?


492

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

উদাহরণস্বরূপ আমি কোনও ধরণের শ্রোতা সেট আপ করতে পছন্দ করব, তারপরে একটি ওয়েব পৃষ্ঠার জন্য অনুরোধ করুন এবং ইঞ্জিন দ্বারা চালিত সমস্ত অনুসন্ধানগুলি দেখুন বা কেবলমাত্র প্রোডাকশন সার্ভারে চালিত সমস্ত কোয়েরি দেখুন। কিভাবে আমি এটি করতে পারব?


সমস্যাটি কতটা খারাপ তা নির্ভর করে আমি মাইএসকিউএল প্রক্সি চেষ্টা করার পরামর্শ দিচ্ছি। বি / সি এটি অ্যাপ্লিকেশন সার্ভারে স্থাপন করা যেতে পারে, ক) এটি স্কেলযোগ্য, খ) ডিবিতে সমস্ত ট্র্যাফিককে প্রভাবিত করতে হবে না। এটি 'আলফা'-তে রয়েছে তবে দীর্ঘ সময় ধরে চলেছে। dev.mysql.com/downloads/mysql-proxy
জেফ মাশ

14
কেন এই বন্ধ ছিল ?! এটি সুপারিশের জন্য নয়, এক্স কীভাবে করবেন তা জিজ্ঞাসা করছে । প্রায় 200 জন এই প্রশ্নটি দরকারী বলে মনে করেছে। মোডগুলি শান্ত হওয়া দরকার।
সেরিন

1
সরঞ্জামগুলির কোনও রেফারেন্স বাদ দিতে আমি এই প্রশ্নটির উচ্চারণ করেছি। আমি মনে করি যে এই প্রশ্নটি এখানে পুরোপুরি অনন্য-বিষয়বস্তুতে রয়েছে, যেমন "আমরা কী করা উচিত প্রশ্নগুলি চালাচ্ছি?" একটি ডেটাবেস-সম্পর্কিত সমস্যা ডিবাগ করার একটি দুর্দান্ত প্রথম পদক্ষেপ।
জেফ্রি বসবুম

1
@ MaasSql mysql প্রক্সি পিডিও ব্যবহার করার সময় পিএইচপি বিকাশকারীদের জন্য সহায়ক নয় কারণ কোয়েরি এবং মানগুলি কেবল সার্ভারে আবদ্ধ হয়।
আনন্দ

উত্তর:


298

আপনি SHOW FULL PROCESSLIST;যে কোনও সময়ে কী জিজ্ঞাসাগুলি প্রক্রিয়া করা হচ্ছে তা দেখতে আপনি মাইএসকিউএল কমান্ডটি চালিয়ে যেতে পারেন, তবে সম্ভবত আপনি যা আশা করছেন তা অর্জন করবে না।

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

সচেতন হোন যে এটি সম্ভবত INSERTপ্রতিটি একক ক্যোয়ারির উপরে একটি অতিরিক্ত যুক্ত করে সার্ভারের সমস্ত কিছু যথেষ্টভাবে ধীরে ধীরে করবে ।


সম্পাদনা করুন: অন্য বিকল্প হ'ল জেনারেল ক্যয়েরি লগ , তবে এটি একটি ফ্ল্যাট ফাইলে লেখা থাকায় প্রদর্শন করার নমনীয়তার জন্য বিশেষত রিয়েল-টাইমে প্রচুর সম্ভাবনা সরিয়ে ফেলবে। আপনি যদি কেবল একটি সহজ, সহজেই বাস্তবায়িত উপায় দেখতে চান তবে কী চলছে তা, জিকিউএল সক্ষম করে এবং তারপরে লগফাইলে চালানো tail -fকৌশলটি করতে পারে।


5
এটি নির্বাক শোনায় তবে আমি কীভাবে জিকিউএল সক্ষম করতে পারি? আমি লগ_আউটপুট = ফাইল, জেনারেল_লগ = ১, এবং জেনারেল-লগ_ফাইলে = / প্যাথোফাইল যুক্ত করেছি এবং লগ ফাইলটি পুচ্ছ করেছি, সাইটে আঘাত করেছি এবং কিছুই পাইনি। আমি কি ভুল করছি?
বারফুন

আমি কোনও কিছুর বিষয়ে নিশ্চিত হতে পারি না তবে আপনি অবশ্যই সার্ভারটি পুনরায় চালু করেছেন তা নিশ্চিত করে নিন এবং আপনি যে ফাইলটি চয়ন করেছেন সেটি হ'ল মাইএসকিএল-এ লেখার অ্যাক্সেস থাকতে পারে।
চাদ বার্চ

7
আমি এটি বের করে ফেলেছি - আমার আমার সিএনএফ-এ কেবলমাত্র লগ = / পাথ / টু / লগ দরকার ছিল আমি তারপরে লেজটি করলাম এবং এটি সমস্ত অনুসন্ধানগুলি প্রদর্শন করে।
বারফুন

1
আমি যতদূর বলতে পারি, একটি নির্বাচনী বিবৃতিতে কোনও কিছুর ট্রিগার করার উপায় নেই । ট্রিগারগুলি কেবল ইনসার্ট, আপডেট, ডিলিট ... বা আমি ভুল তথ্য দিয়েছি?
গ্যাবে

1
আগেও আমি একই জায়গায় ছিলাম। বর্তমানে, আমি মন্যোগ ব্যবহার করছি যা খুব কম ওভারহেড সহ এগুলি করে hence

518

আপনি প্রতিটি ক্যোয়ারী খুব সহজেই একটি লগ ফাইলে লগ করতে পারেন:

mysql> SHOW VARIABLES LIKE "general_log%";

+------------------+----------------------------+
| Variable_name    | Value                      |
+------------------+----------------------------+
| general_log      | OFF                        |
| general_log_file | /var/run/mysqld/mysqld.log |
+------------------+----------------------------+

mysql> SET GLOBAL general_log = 'ON';

আপনার প্রশ্নগুলি করুন (যে কোনও ডিবিতে)। গ্রেপ বা অন্যথায় পরীক্ষা/var/run/mysqld/mysqld.log

তাহলে ভুলে যাবেন না

mysql> SET GLOBAL general_log = 'OFF';

বা কর্মক্ষমতা ডুবে যাবে এবং আপনার ডিস্কটি পূর্ণ হবে!


37
ভাল উত্তর! আপনি tail -f -n300 /var/run/mysqld/mysqld.logআপনার লগ ফাইলের লাইভ ট্র্যাক রাখতে ব্যবহার করতে পারেন
ক্লোদিও ব্রেডফেল্ড

4
নোট করুন যে এই ভেরিয়েবলগুলির জন্য মাইএসকিউএল 5.1.12 বা তার বেশি প্রয়োজন। তার আগে, এই সেটিংস পরিবর্তন করতে আপনাকে মাইএসকিউএল পুনরায় চালু করতে হবে।
jlh

লগতে প্যারামিটারাইজড ভেরিয়েবলগুলি লেখার কোনও উপায় আছে কি? আমি দেখছি SELECT name FROM person where id=?কিন্তু আমি জানি না কী id
জেফ

SHOW VARIABLESআমার জন্য কাজ করেনি। তবে SELECT @@GLOBAL.general_log_file;ঠিক আছে। (মারিয়াডিবি 10.1.9)
ফিল পিরোজকভ

1
গুরুত্বপূর্ণ - আপনাকে অবশ্যই লগিং আউটপুট দিয়ে পরীক্ষা করতে হবে SHOW VARIABLES LIKE "log_output%"। যদি এটি সেট করা থাকে table, তবে লগগুলি ডাটাবেসে নিজেই সংরক্ষণ করা হবে, টেবিলটি mysql.general_logফাইল সিস্টেমে নয়। আপনি এটি file দিয়ে এতে পরিবর্তন করতে পারেনSET GLOBAL log_output = 'file';
অ্যারিস জুরাগা

199

যদিও ইতিমধ্যে একটি উত্তর গৃহীত হয়েছে, তবে আমি উপস্থাপন করতে চাই যা সবচেয়ে সহজ বিকল্প হতে পারে:

$ mysqladmin -u bob -p -i 1 processlist

এটি আপনার স্ক্রিনে প্রতি সেকেন্ডে বর্তমান প্রশ্নের মুদ্রণ করবে।

  • -u আপনি যে কমান্ডটি কার্যকর করতে চান সেই মাইএসকিএল ব্যবহারকারী
  • -p আপনার পাসওয়ার্ডের জন্য অনুরোধ করুন (যাতে আপনার এটি কোনও ফাইলে সংরক্ষণ করতে হবে না বা কমান্ডটি আপনার কমান্ডের ইতিহাসে প্রদর্শিত হবে)
  • i সেকেন্ডের ব্যবধান।
  • --verboseপ্রতিটি প্রক্রিয়াটির পুরো ক্যোয়ারী প্রদর্শন করে পুরো প্রক্রিয়া তালিকাটি প্রদর্শন করতে পতাকা ব্যবহার করুন । (ধন্যবাদ, এনএমএটি )

একটি সম্ভাব্য খারাপ দিক রয়েছে: যদি আপনার সেট আপ করা ব্যবধানের মধ্যে তারা চালিত হয় তবে দ্রুত অনুসন্ধানগুলি প্রদর্শিত না হতে পারে। আইই: আমার ব্যবধানটি এক সেকেন্ডে সেট করা হয়েছে এবং যদি এমন কোনও কোয়েরি থাকে যা .02চালাতে কয়েক সেকেন্ড সময় নেয় এবং অন্তরগুলির মধ্যে চলে তবে আপনি এটি দেখতে পাবেন না।

আপনি যখন শ্রোতা বা অন্য কিছু সেট না করে দ্রুত চলমান অনুসন্ধানগুলি পরীক্ষা করতে চান তখন এই বিকল্পটি ব্যবহার করুন।


11
এটিই সেরা সমাধান!
1398287

3
আমার মতে এই আরও ভাল সমাধান কারণ প্রতিবার কমান্ড প্রেরণের জন্য কোনও নতুন মাইএসকিএল সংযোগ ব্যবহার করবেন না, পরিবর্তে একটি মাইএসকিএল সংযোগটি খুলুন এবং শো প্রসেসলিস্টটি প্রেরণ করতে এটি ব্যবহার করুন;
জোসে নোবাইল

@ জোসনোবাইল আপনি যদি নিজের অ্যাডাপ্টারে মাইএসকিএল সংযোগটি খোলা রাখেন তবে তা আসলে কিছু যায় আসে না। আমার সমাধানটি ওপির ক্ষেত্রে ঠিক ঠিক নয় কারণ আমার দ্রবণটি অ্যাডাপ্টারে ব্যবহারের জন্য প্রস্তুত নয়। এটি তবে দ্রুত এবং সহজ।
হাফপাস্টফোর.কম

7
আপনি --verboseসম্পূর্ণ প্রশ্নগুলি যুক্ত করতে যোগ করতে পারেন
nmat

2
এই উত্তরটি আমি খুঁজছিলাম। এটি উত্তর হিসাবে গ্রহণ করা উচিত। এটি বাস্তবায়নের সবচেয়ে সহজ উত্তরও।
চাদ

51

চলমান মাইএসকিউএল অনুসন্ধানগুলি দেখতে এই সুবিধাজনক এসকিউএল কোয়েরিটি চালান। কোনও কোড পরিবর্তন বা ওভারহেড ছাড়াই এটি আপনার পছন্দমতো পরিবেশ থেকে চালানো যায় whenever এটিতে কিছু মাইএসকিউএল অনুমতি কনফিগারেশন লাগতে পারে তবে আমার জন্য এটি কোনও বিশেষ সেটআপ ছাড়াই চলে runs

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND != 'Sleep';

একমাত্র ক্যাচটি হ'ল আপনি প্রায়শই ক্যোয়ারী মিস করেন যা খুব দ্রুত সঞ্চালিত হয়, তাই এটি দীর্ঘকালীন চলমান প্রশ্নের জন্য বা মাইএসকিউএল সার্ভারের যে ব্যাক আপগুলি রয়েছে সেগুলির জন্য সবচেয়ে কার্যকর - আমার অভিজ্ঞতায় এটি ঠিক সেই সময়টি যখন আমি দেখতে চাই " সরাসরি "জিজ্ঞাসা।

আপনি যে কোনও এসকিউএল কোয়েরিটিকে আরও সুনির্দিষ্ট করে তুলতে আপনি শর্তও যুক্ত করতে পারেন।

উদাহরণস্বরূপ 5 সেকেন্ড বা তারও বেশি সময় ধরে চলমান সমস্ত কোয়েরি দেখায়:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND != 'Sleep' AND TIME >= 5;

যেমন সমস্ত চলমান আপডেটগুলি দেখান:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND != 'Sleep' AND INFO LIKE '%UPDATE %';

সম্পূর্ণ বিবরণের জন্য দেখুন: http://dev.mysql.com/doc/refman/5.1/en/processlist-table.html


17

আমি একটি বিশেষ পরিস্থিতিতে আছি যেখানে আমার লগইন চালু করার অনুমতি নেই এবং লগগুলি চালু করা থাকলে সেগুলি দেখার অনুমতি আমার নেই। আমি একটি ট্রিগার যোগ করতে পারিনি, তবে শো প্রসেসলিস্টে কল করার অনুমতি আমার ছিল। সুতরাং, আমি এটিকে সর্বোত্তম প্রচেষ্টা দিয়েছি এবং এটি নিয়ে এসেছি:

"শোস্ক্ল্প্রসেসলিস্ট" নামে একটি বাশ স্ক্রিপ্ট তৈরি করুন:

#!/bin/bash

while [ 1 -le 1 ]
do
         mysql --port=**** --protocol=tcp --password=**** --user=**** --host=**** -e "show processlist\G" | grep Info | grep -v processlist | grep -v "Info: NULL";
done

স্ক্রিপ্টটি কার্যকর করুন:

./showsqlprocesslist > showsqlprocesslist.out &

আউটপুট টেইল:

tail -f showsqlprocesslist.out

বিঙ্গো বাংলো। যদিও এটি থ্রোটলড নয়, এটি যে বক্সগুলিতে আমি চালিয়েছিলাম তাতে এটি কেবল 2-4% সিপিইউ নেয়। আমি আশা করি এটি সম্ভবত কাউকে সাহায্য করবে।


হা! সুস্বাদু। এটা ভাল।
দার্ট এগারিজিয়াস

খুব বেশি ভার্বোজ আউটপুট এড়াতে কিছুটা বিলম্ব দরকার। আমার সম্পাদনা দেখুন দয়া করে।
স্লিক্স

লুপটিতে একটি ঘুম দেওয়ার পরামর্শের জন্য @ স্লাইক্স ধন্যবাদ। তবে, আপনি যদি ঘুমের চেয়ে কম সময়ের জন্য বেঁচে থাকা স্বল্পকালীন ক্যোয়ারী সন্ধান করেন তবে আপনি যা খুঁজছেন তা সম্ভবত আপনি এটি মিস করবেন। আপনি যদি ঠিক সময়ে সময়ে স্ন্যাপশটের সন্ধান করেন তবে এটি কোনও লুপে চালানো উচিত নয়। এটিও লক্ষ করা উচিত যে এটি সম্ভবত খুব স্বল্পকালীন প্রশ্নগুলি মিস করতে পারে।
মাইকেল ক্রাকলিস ২lis

17

strace

লাইভ মাইএসকিউএল / মারিয়াডিবি ক্যোয়ারী দেখার দ্রুততম উপায় হ'ল ডিবাগার ব্যবহার করা। লিনাক্সে আপনি ব্যবহার করতে পারেন strace, উদাহরণস্বরূপ:

sudo strace -e trace=read,write -s 2000 -fp $(pgrep -nf mysql) 2>&1

যেহেতু প্রচুর পালানো অক্ষর রয়েছে তাই নীচের কমান্ডের উপরে আপনি পাইপিং দ্বারা স্ট্রেসের আউটপুট ফর্ম্যাট করতে পারেন (কেবলমাত্র এই দুটি এক-লাইনারের মধ্যে যোগ করুন ):|

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"

সুতরাং আপনার কনফিগারেশন ফাইলগুলিকে স্পর্শ না করে নন-টাইম সহ মোটামুটি পরিষ্কার এসকিউএল কোয়েরিগুলি দেখতে পাওয়া উচিত।

স্পষ্টতই এটি লগগুলি সক্ষম করার মানক পদ্ধতির প্রতিস্থাপন করবে না, যা নীচে বর্ণিত (যার মধ্যে এসকিউএল সার্ভার পুনরায় লোড করা জড়িত)।

dtrace

সার্ভার স্পর্শ না করে লাইভ মাইএসকিউএল অনুসন্ধানগুলি দেখতে মাইএসকিউএল অনুসন্ধানগুলি ব্যবহার করুন। উদাহরণ লিপি:

#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
     printf("Query: %s\n", copyinstr(arg1));
}

উপরের স্ক্রিপ্টটি কোনও ফাইলে সংরক্ষণ করুন (যেমন watch.d) এবং চালান:

pfexec dtrace -s watch.d -p $(pgrep -x mysqld)

আরও জানুন: মাইএসকিউএলকে ডিট্র্যাকিংয়ের সাথে শুরু করা

গীবস মাইএসকিউএল স্পাইগ্লাস

এই উত্তর দেখুন ।

লগ

উন্নয়নের প্রস্তাবগুলির জন্য কার্যকর পদক্ষেপগুলি এখানে।

আপনার ~/.my.cnfবা বিশ্বব্যাপী এই লাইনগুলি যুক্ত করুন my.cnf:

[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log

পাথ: /var/log/mysqld.logবা /usr/local/var/log/mysqld.logআপনার ফাইল অনুমতিগুলির উপর নির্ভর করেও কাজ করতে পারে।

তারপরে আপনার মাইএসকিউএল / মারিয়াডিবি পুনরায় চালু করুন ( sudoপ্রয়োজনীয় হলে উপসর্গ ):

killall -HUP mysqld

তারপরে আপনার লগগুলি পরীক্ষা করুন:

tail -f /tmp/mysqld.log

শেষ করার পর, পরিবর্তন general_logকরার জন্য 0(তাই আপনি যদি ভবিষ্যতে এটি ব্যবহার করতে পারেন), তারপর ফাইল এবং পুনরায় আরম্ভ করুন SQL সার্ভার আবার সরান: killall -HUP mysqld


1
আপনি যদি general_logকোনও মাইএসকিউএল কোয়েরি থেকে সেট করেন তবে সার্ভারটি মারার দরকার নেই । এটি যে ফাইলটিতে general_log_fileইঙ্গিত করছে তাতে লিখতে শুরু করবে ।
রবার্ট ব্রিসিটা

15

লিনাক্স উবুন্টু মেশিনটিতে আমি এসেছি এটির মধ্যে এটি সবচেয়ে সহজ সেটআপ। সমস্ত প্রশ্নের লাইভ দেখতে পাগল।

আপনার মাইএসকিউএল কনফিগারেশন ফাইলটি অনুসন্ধান করুন এবং ওবুন্টুতে সাধারণত /etc/mysql/my.cnf খুলুন। "লগিং এবং প্রতিলিপি" বলছে এমন বিভাগটি দেখুন

#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.

log = /var/log/mysql/mysql.log

লগিং চালু করার জন্য কেবল "লগ" ভেরিয়েবলকে আপত্তিহীন করুন। এই কমান্ডটি দিয়ে মাইএসকিউএল পুনরায় চালু করুন:

sudo /etc/init.d/mysql restart

এখন আমরা প্রশ্নগুলি আসার সাথে সাথে পর্যবেক্ষণ শুরু করতে প্রস্তুত a একটি নতুন টার্মিনাল খুলুন এবং লগ ফাইলটি স্ক্রোল করার জন্য এই কমান্ডটি চালান, প্রয়োজনে পাথ সামঞ্জস্য করুন।

tail -f /var/log/mysql/mysql.log

এখন আপনার অ্যাপ্লিকেশন চালান। আপনি আপনার টার্মিনাল উইন্ডোতে ডাটাবেস প্রশ্নগুলি উড়তে শুরু করতে দেখবেন। (আপনার টার্মিনালে স্ক্রোলিং এবং ইতিহাস সক্ষম রয়েছে তা নিশ্চিত করুন)

Http://www.howtogeek.com/howto/datedia/monitor-all-sql-queries-in-mysql/ থেকে


13

কমান্ড লাইন থেকে আপনি চালাতে পারেন:

watch --interval=[your-interval-in-seconds] "mysqladmin -u root -p[your-root-pw] processlist | grep [your-db-name]"

[মান] আপনার মানগুলির সাথে প্রতিস্থাপন করুন।

বা আরও ভাল:

 mysqladmin -u root -p -i 1 processlist;

1
এটি আসলে খুব ভাল স্নিপেট যা কার্যকর হতে পারে .. ধন্যবাদ!
এমজিপি

ঠিক আমি খুঁজছেন ছিল কি!! ঘড়ি আলাদাভাবে ইনস্টল করা প্রয়োজন।
টিলো

12

এমটোপ পরীক্ষা করে দেখুন


1
হ্যাঁ, তবে ডেবিয়ান বা উবুন্টুতে এটি ইনস্টল করার জন্য শুভকামনা: বাগস.লাঞ্চপ্যাড.এন.বুন্টু
+

এটি ডেবিয়ানে চালিত হওয়ার জন্য পরিচালিত, তবে এটি প্রচুর পরিমাণে প্রশ্ন মিস করে না বলে এর মূল্যহীন। আমি ক্যোয়ারী কাউন্টারকে ক্রমাগত উপরে যেতে দেখছি তবে এটি খুব কমই কোনও প্রশ্ন প্রদর্শন করে। দেখে মনে হচ্ছে এটি কেবল অনুসন্ধানগুলি প্রদর্শন করে যা প্রায় 1 সেকেন্ডের চেয়ে বেশি সময় নেয়।
কোবরা_প্রথম

@ কোবরা_ফাস্ট এমটপ সোর্সফোজের পৃষ্ঠাটিতে স্পষ্ট করে বলেছেন: mtop (MySQL top) monitors a MySQL server showing the queries which are taking the most amount of time to complete. এমটোপ.সোর্সফোর্জন.নেট এটি কখনও কখনও বেশ কার্যকর।
ইয়ান লুইস

7

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

লগ ফাইল তৈরি করার পদক্ষেপ (সরলতার জন্য এখানে অন্যান্য পোস্টগুলির কিছু নকল):

  1. এখানে অবস্থিত ফাইলটি সম্পাদনা করুন:

    C:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini

    ফাইলের নীচে "লগ = विकास.লগ" যুক্ত করুন। (নোট এই ফাইলটি সংরক্ষণ করার জন্য আমার প্রশাসক হিসাবে আমার পাঠ্য সম্পাদকটি চালানো দরকার))

  2. কমান্ড লাইনটি খুলতে, পাসওয়ার্ডটি প্রবেশ করতে মাইএসকিএল ওয়ার্কবেঞ্চ ব্যবহার করুন।

    সাধারণ লগিং চালু করার জন্য নিম্নলিখিতটি চালান যা সমস্ত অনুসন্ধানের রেকর্ডটি রেকর্ড করবে:

    SET GLOBAL general_log = 'ON';
    
    To turn off:
    
    SET GLOBAL general_log = 'OFF';

    এটি নিম্নলিখিত অবস্থানে একটি পাঠ্য ফাইলে চলমান কোয়েরিগুলির কারণ হতে পারে।

    C:\ProgramData\MySQL\MySQL Server 5.5\data\development.log
  3. একটি কনসোল অ্যাপ্লিকেশন তৈরি করুন / রান করুন যা লগ তথ্যকে রিয়েল টাইমে আউটপুট দেয়:

    উত্স ডাউনলোড করতে এখানে

    সূত্র:

    using System;
    using System.Configuration;
    using System.IO;
    using System.Threading;
    
    namespace LiveLogs.ConsoleApp
    {
      class Program
      {
        static void Main(string[] args)
        {
            // Console sizing can cause exceptions if you are using a 
            // small monitor. Change as required.
    
            Console.SetWindowSize(152, 58);
            Console.BufferHeight = 1500;
    
            string filePath = ConfigurationManager.AppSettings["MonitoredTextFilePath"];
    
            Console.Title = string.Format("Live Logs {0}", filePath);
    
            var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
    
            // Move to the end of the stream so we do not read in existing
            // log text, only watch for new text.
    
            fileStream.Position = fileStream.Length;
    
            StreamReader streamReader;
    
            // Commented lines are for duplicating the log output as it's written to 
            // allow verification via a diff that the contents are the same and all 
            // is being output.
    
            // var fsWrite = new FileStream(@"C:\DuplicateFile.txt", FileMode.Create);
            // var sw = new StreamWriter(fsWrite);
    
            int rowNum = 0;
    
            while (true)
            {
                streamReader = new StreamReader(fileStream);
    
                string line;
                string rowStr;
    
                while (streamReader.Peek() != -1)
                {
                    rowNum++;
    
                    line = streamReader.ReadLine();
                    rowStr = rowNum.ToString();
    
                    string output = String.Format("{0} {1}:\t{2}", rowStr.PadLeft(6, '0'), DateTime.Now.ToLongTimeString(), line);
    
                    Console.WriteLine(output);
    
                    // sw.WriteLine(output);
                }
    
                // sw.Flush();
    
                Thread.Sleep(500);
            }
        }
      }
    }

1
এটিকে দেখতে দুর্দান্ত লাগছে এবং আমি অবশ্যই এটি একবার দেখে নিচ্ছি, ওএসএস প্রকল্প হিসাবে এটি গ্রহণ করে একটি প্রোফাইলিং সরঞ্জাম তৈরি করতে দারুণ!
রিপ্পো

আমি মনে করি এটি একটি ভাল ধারণা। আমি গুগল কোডে একটি এসভিএন রেপো রেখেছি। সম্ভবত সবচেয়ে ছোট ওএস প্রকল্প, তবে এটি এখন পর্যন্ত খুব কার্যকর। আমি সম্ভবত এটি প্রসারিত করব, আগ্রহী অন্য কেউ এটি আরও গ্রহণ করে কিনা তা দেখার আগ্রহী। কোড.google.com/p/livelogs
gb2d

ওপিকে তার লিনাক্স মেশিনে কাজ করা দরকার। দেখে মনে হচ্ছে আপনার উত্তরটি উইন্ডোজ মেশিনের জন্য বোঝানো হয়েছে। যদিও এই উত্তরটি সৃজনশীলতার প্রতিফলন করে, এটি অন্যের পক্ষে সহায়ক নাও হতে পারে।
হাফপাস্টফোর.কম

1

সাধারণ লগিং সক্ষম করতে বর্ণিত পূর্ববর্তী উত্তরের পাশাপাশি লগতে কোনও এসকিউএল লেখার আগে আমাকে আমার ভ্যানিলা মাইএসকিউএল 5.6 ইনস্টলেশনটিতে একটি অতিরিক্ত ভেরিয়েবল পরিবর্তন করতে হয়েছিল:

SET GLOBAL log_output = 'FILE';

ডিফল্ট সেটিংসটি 'নন' ছিল।


0

গীবস মাইএসকিউএল স্পাইগ্লাস

অ্যাগিলডাটা সম্প্রতি গীবস মাইএসকিউএল স্কেলাবিলিটি অ্যাডভাইজার (একটি নিখরচায়িত-স্ব-পরিষেবা সরঞ্জাম) চালু করেছে যা ব্যবহারকারীদের গিবসগুলিতে আপলোড করার জন্য কোয়েরিগুলির লাইভ স্ট্রিম ক্যাপচার করতে দেয়। স্পাইগ্লাস (যা ওপেন সোর্স) আপনার মাইএসকিউএল সার্ভার এবং ক্লায়েন্ট অ্যাপ্লিকেশনগুলির মধ্যে ইন্টারঅ্যাকশন দেখবে। মাইএসকিউএল ডাটাবেস সার্ভারটির কোনও পুনরায় কনফিগারেশন বা পুনরায় চালু করার প্রয়োজন নেই (ক্লায়েন্ট বা অ্যাপ্লিকেশন)।

গিটহাব: অ্যাগ্রিলডাটা / গীবস-মাইএসকিএল-স্পাইগ্লাস

আরও জানুন: মরিচা দিয়ে প্যাকেট ক্যাপচারিং মাইএসকিউএল

কমান্ড ইনস্টল করুন:

curl -s https://raw.githubusercontent.com/AgilData/gibbs-mysql-spyglass/master/install.sh | bash

2
স্পাইগ্লাসের মনে হয় যে কোনও সার্ভারটি নীচে রয়েছে এবং এটি শেষ করার প্রতিশ্রুতিটি 3 বছর আগে একটি এপিআই কী প্রয়োজন। নিশ্চিত না যে এই পণ্যটি এখনও সমর্থিত / কাজ করছে।
ড্যান টেনেনবাউম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.