মাইএসকিউএল সার্ভারে চালিত ক্যোয়ারী কীভাবে ক্যাপচার করবেন?


14

আমরা কিছু সার্ভারের পারফরম্যান্স ডিবাগিং করার চেষ্টা করছি এবং আমি কয়েক মিনিট সময় ধরে আমাদের মাইএসকিউএল সার্ভারে চালিত ক্যোয়ারির একটি স্ন্যাপশট ক্যাপচার করতে চাই।

আমি মাইএসকিউএল এর সাথে পরিচিত SHOW FULL PROCESSLIST, তবে আমি কমান্ড লাইনের মাধ্যমে এটি চালাতে সক্ষম হতে চাই যাতে আমি এটি কোনও ফাইলে ফেলে দিতে পারি এবং পোস্ট প্রক্রিয়া করতে পারি।

এই ক্যোয়ারিকে কোনও ফাইলে আউটপুট দেওয়ার কোনও উপায় আছে এবং এটি প্রতি সেকেন্ড বা তারপরে চলে?

সমস্ত ক্যোয়ারী চালিত হওয়ার জন্য কী আরও ভাল উপায় আছে?

নোট করুন যে আমি কেবল ধীর অনুসন্ধানগুলিতে আগ্রহী নই (আমি স্লো ক্যোয়ারী লগের সাথে পরিচিত)।


আপনি কোন ওএস চালাচ্ছেন? এটি লিনাক্সে করা অত্যন্ত সহজ, তাই আমি উইন্ডোজ অনুমান করছি?
প্যাট্রিক

@ পেট্রিক শুনে লিনাক্সে এটি সহজ! আগুন দূরে ...
হাফিচুক

1
বেশিরভাগ ক্যোয়ারী চলবে এবং এক সেকেন্ডের চেয়ে অনেক কম সময়ে শেষ হবে এবং আপনার তালিকায় কখনই প্রদর্শিত হবে না।
জোয়েল কোয়েল

অতিরিক্ত লম্বা প্রশ্নগুলি প্রতিটি লুপের জন্য একবারে অনেক বার উপস্থিত হবে তবে নিশ্চিত আপনি যদি চান তবে আপনি ব্যাশের লুপে কেবল echo show full processlist | mysqlবা আরও ভাল করতে পারেন SELECT info FROM information_schema.processlist WHERE Command="Query" AND User!="root"। লাইনের একটি দম্পতি যোগ করুন এবং আপনার চেয়ে একই ক্যোয়ারী কার্যকারিতা পাবেন innotopবা pt-kill
আস্তিক

উত্তর:


10

আমি স্লো ক্যোয়ারী লগটি ব্যবহার করব। আপনি দীর্ঘ_ জিজ্ঞাস্য_কাল = 0 সেট করে থাকলে এটি ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে নামা ছাড়ানোর জন্য আপনি দীর্ঘসূত্রতা রাখেন time

এটি সমস্ত অনুসন্ধানগুলিও ক্যাপচার করে, যা এখানে উল্লিখিত টিসিপি-স্নিফিং কৌশলগুলির ক্ষেত্রে সত্য নয়; যারা সকেটের মাধ্যমে মৃত্যুদন্ড কার্যকর করা প্রশ্নগুলি ক্যাপচার করবে না। প্রসেসলিস্ট দেখানোর জন্য ডিট্টো; আপনি দ্রুত চলমান অনুসন্ধানগুলি মিস করবেন।

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


13

সবচেয়ে শক্তিশালী উপায় হ'ল "সাধারণ ক্যোয়ারী লগ" ব্যবহার করা, যা সমস্ত ক্যোয়ারী ক্যাপচার করবে: http://dev.mysql.com/doc/refman/5.1/en/query-log.html

আপনি মাইএসকিউএল সার্ভার সংস্করণটি নির্দিষ্ট করেন না, তবে আপনার যদি 5.1.12 বা তার পরে থাকে তবে আপনি এসকিউএল এর মাধ্যমে একটি বৈশ্বিক চলক সহ এটি সক্ষম ও অক্ষম করতে পারবেন; বিশদ জন্য ডকুমেন্টেশন দেখুন।


ধন্যবাদ @ ড্যানিয়েল আমরা এটি চালু করেছি, তবে লগে কোনও টাইমস্ট্যাম্পের তথ্য নেই। সেখানে কীভাবে টাইমস্ট্যাম্প পাবেন কোনও ধারণা?
হাফিচুক

দুঃখিত, না, আপনাকে ম্যানুয়ালটিতে নির্দেশ করা ছাড়া আর কিছুই নয়।
ড্যানিয়েল পিটম্যান

2
দীর্ঘ_ ক্যুরি_টাইম = 0 সহ ধীর ক্যোয়ারী লগ একটি ভাল বিকল্প; এটি এখনও সমস্ত অনুসন্ধান ক্যাপচার করবে।
ব্যারন শোয়ার্টজ

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

5

এই কমান্ডটি রুট হিসাবে ব্যবহার করুন (বা ব্যবহার করুন) sudo ):

tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e '
while(<>) { chomp; next if /^[^ ]+[ ]*$/;
  if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER)/i) {
    if (defined $q) { print "$q\n"; }
    $q=$_;
  } else {
    $_ =~ s/^[ \t]+//; $q.=" $_";
  }
}'

পাওয়া গেল http://www.mysqlperformanceblog.com/2008/11/07/poor-mans-query-logging/


4

নিশ্চিত:

mysqladmin -u root -p -i 1 --verbose processlist > /tmp/pl.out

চিয়ার্স


আহ ... mysqladmin। নিখুঁত, ধন্যবাদ @ HTTP500
হাফিচুক

1
এটি প্রকৃতপক্ষে প্রতি 1 সেকেন্ডে প্রসেসলিস্ট কমান্ড চালায়। কিছু খুব দ্রুত প্রশ্নগুলি এখনও ক্যাপচার থেকে বাঁচতে পারে; যদি লোড কয়েকটি বড় প্রশ্ন তৈরি হয় তবে এটি কাজ করবে, যদি এটি অনেকগুলি ছোট প্রশ্ন তৈরি করে তবে এটি নাও করতে পারে।
এলসার্নি

@ ইসেমি, ওপিতে "প্রতি সেকেন্ড বা তারপরে" জিজ্ঞাসা করা হয়েছে।
HTTP500

4

এটি মাইএসকিএল প্রক্সিটির জন্য একটি জায়গা হতে পারে । এটি মূলত আপনাকে যে প্রশ্নগুলি প্রেরণ করা হচ্ছে তা ক্যাপচার (এবং কৌশলগত) করতে দেয়। ইন্টারসেপ্ট করার জন্য একটি বেসিক সেটআপ করা বেশ সহজ। তারপরে কেবলমাত্র আপনার ক্লায়েন্টের কনফিগারেশনকে প্রক্সিতে নির্দেশ করুন যাতে আপনি সমস্ত অনুরোধগুলি ক্যাপচার করতে পারেন।


4

টার্মিনাল ভিত্তিক ওয়্যারশার্ক প্রোগ্রাম টিশার্ক সহায়তা করতে পারে:

tshark -T fields -R mysql.query -e mysql.query

sudo yum install wiresharkআপনাকে অ্যামাজন লিনাক্সে sudo apt-get install tsharktshark দেবে এবং আপনাকে উবুন্টু 14+ তে tshark দেবে


3

আমি 'রুই পেড্রো বার্নার্ডিনোর সমাধানটি ব্যবহার করেছি। আমি নীচে বিস্তারিত হিসাবে প্রথম লাইনে কয়েকটি জিনিস পরিবর্তন করেছি ব্যতীত দুর্দান্ত কাজ করে ...

tcpdump -i any -s 0 -l -vvv -w - dst port 3306 | strings | perl -e 'while(<>) { chomp; next if /^[^ ]+[ ]*$/;
    if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER)/i) {
    if (defined $q) { print "$q\n"; }
    $q=$_;
  } else {
    $_ =~ s/^[ \t]+//; $q.=" $_";
  }
}'

1

Tcpdump, কোয়েরি এবং উত্তর উভয় ব্যবহার করে mysql tcp সেশনগুলি ক্যাপচার করুন। উদাহরণস্বরূপ ম্যাটকিট সরঞ্জাম ব্যবহার করে আপনি একটি ডাম্প বিশ্লেষণ করতে পারেন:

http://www.maatkit.org/doc/mk-tcp-model.html

http://www.maatkit.org/doc/mk-query-digest.html


0

আমি অনুসন্ধান এবং অনুসন্ধান করছিলাম এবং অবশেষে মাইএসকিএল সার্ভারে কার্যকর হওয়া সমস্ত প্রশ্নের নিরীক্ষণের জন্য আমি মনিগে পৌঁছেছি । কেবলমাত্র "পারফরম্যান্স_সেমিমা" এবং "স্টেটমেন্টস_ডিজাস্ট" টেবিলটি সক্ষম করতে হবে এবং পারফরম্যান্স_সেমিমা হবে উপরের মাইএসকিউএল 5.6.14 এর সাথে উপলব্ধ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.