মাইএসকিউএলে লগ ফাইলগুলি কীভাবে দেখতে পাবেন?


176

আমি পড়েছি যে মাইকিউএল সার্ভার একটি লগ ফাইল তৈরি করে যেখানে এটি সমস্ত ক্রিয়াকলাপের রেকর্ড রাখে - যেমন কখন এবং কোন অনুসন্ধানগুলি কার্যকর করে।

আমার সিস্টেমে এটি কোথায় আছে কেউ আমাকে বলতে পারেন? আমি কীভাবে এটি পড়তে পারি?

মূলত, আমাকে বিভিন্ন ইনপুট [দুটি তারিখের মধ্যে ব্যাকআপ] দিয়ে ডাটাবেসটি ব্যাক আপ করতে হবে তাই আমার মনে হয় এখানে লগ ফাইলটি ব্যবহার করা দরকার, সে কারণেই আমি এটি করতে চাই ...

আমি মনে করি এই লগটি কোনওভাবে সুরক্ষিত করা আবশ্যক কারণ ব্যবহারকারীর নাম এবং পাসওয়ার্ডের মতো সংবেদনশীল তথ্য লগ হতে পারে [যদি কোনও প্রশ্নের জন্য এটির প্রয়োজন হয়]; সুতরাং এটি সুরক্ষিত হতে পারে, সহজে দেখা যায় না?

আমার সিস্টেমে রুট অ্যাক্সেস আছে, আমি লগটি কীভাবে দেখতে পারি?

আমি যখন /var/log/mysql.log খোলার চেষ্টা করি এটি ফাঁকা থাকে।

এটি আমার কনফিগারেশন ফাইল:

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
log = /var/log/mysql/mysql.log 
binlog-do-db=zero



user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
skip-external-locking

bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

উত্তর:


164

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

  • The Error Log। এটিতে সার্ভার চলাকালীন ঘটে যাওয়া ত্রুটি সম্পর্কে তথ্য রয়েছে (সার্ভারটি শুরু এবং বন্ধও রয়েছে)

  • The General Query Log। এটি মাইএসকিএলড কী করছে তার একটি সাধারণ রেকর্ড (সংযোগ, সংযোগ বিচ্ছিন্ন, অনুসন্ধান)

  • The Slow Query Log। এটি "ধীর" এসকিউএল বিবৃতি নিয়ে গঠিত (এটির নাম অনুসারে নির্দেশিত)।

ডিফল্টরূপে এমওয়াইএসকিউএলে কোনও লগ ফাইল সক্ষম হয় না। সমস্ত ত্রুটি সিসলগ ( /var/log/syslog) এ প্রদর্শিত হবে ।

তাদের সক্ষম করতে কেবল নীচের পদক্ষেপগুলি অনুসরণ করুন:

পদক্ষেপ 1: এই ফাইলটিতে যান ( /etc/mysql/conf.d/mysqld_safe_syslog.cnf ) এবং সেই লাইনটি মুছে ফেলুন বা মন্তব্য করুন।

পদক্ষেপ 2: মাইএসকিএল কনফ ফাইল ( /etc/mysql/my.cnf) এ যান এবং নিম্নলিখিত লাইনগুলি যুক্ত করুন

ত্রুটি লগ সক্ষম করতে নিম্নলিখিত অনুসরণ করুন

[mysqld_safe]
log_error=/var/log/mysql/mysql_error.log

[mysqld]
log_error=/var/log/mysql/mysql_error.log

সাধারণ ক্যোয়ারী লগ সক্ষম করুন

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

স্লো ক্যোয়ারী লগ সক্ষম করতে নিম্নলিখিতগুলি যুক্ত করুন

log_slow_queries       = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

স্টিপি 3: ফাইলটি সংরক্ষণ করুন এবং নিম্নলিখিত কমান্ডগুলি ব্যবহার করে মাইএসকিএল পুনরায় চালু করুন

service mysql restart

রানটাইমে লগগুলি সক্ষম করতে, মাইএসকিএল ক্লায়েন্টে লগইন করুন ( mysql -u root -p) এবং দিন:

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

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

ব্লগটি দেখতে এখানে ক্লিক করুন


2
আমি মনে করি আপনি কিছু ভুলে গিয়ে 'ভুল' দিয়েছিলেন। পদক্ষেপ 1 অসম্পূর্ণ এবং
বাক্সটি

হাই, @ আঠাফৌদ, এখনই লিঙ্কটি সন্ধান করুন।
লয়োলা

3
লিঙ্কযুক্ত ব্লগ নিবন্ধে /etc/mysql/conf.d/mysqld_safe_syslog.cnfত্রুটি লগ সক্ষম করা হয় তবেই সংশোধন করার কথা উল্লেখ করা হয়েছে। যাইহোক, এই উত্তরটি বর্তমানে এটি লিখিত হিসাবে মনে হয় এটি কোনও লগের পরামর্শ দেয় suggest
মেলিবিয়াস

2
আমার সার্ভার-সংস্করণ 5.6.35। এখানে দ্বিতীয় রস স্মিথের উত্তর আমার পক্ষে কাজ করে। আমাকে সেট করতে হবে slow_query_log = 1;, slow_query_log_file = /var/log/mysql/mysql-slow-query.logএবং long_query_time = 60[মাইএসকিএলডি] এর অধীনে। আমি যখন আপনার কনফিগারেশন দিয়ে শুরু করার চেষ্টা করি তখন সার্ভারটি শুরু হয় তবে আস্তে আস্তে এবং ত্রুটিযুক্ত। আমি সত্যিই অনুমান করি সংস্করণগুলি আলাদা হয় এবং পরবর্তী সংস্করণগুলিতে ওরাকল ভেরিয়েবল-নামগুলি একীকরণ করতে চেয়েছিল। এছাড়াও: আইএমএইচও 2 সেকেন্ড এটি দীর্ঘ নয়।
জ্যাকলিমারডিউর

1
এই ফাইলগুলির অনুমতি সম্পর্কে কী? আমি অনেক ক্ষেত্রে দেখেছি লগ ফাইল তৈরি হয় না।
ম্যাজপাইকো

42

আপনাকে মাইএসকিএল-এ কোয়েরি লগিং সক্রিয় করতে হবে।

  1. সম্পাদনা /etc/my.cnf

    [Mysqld]
    লগ = / tmp / 'mysql.log
    
  2. কম্পিউটার বা মাইএসকিএলড সার্ভিস পুনরায় চালু করুন

    পরিষেবা mysqld পুনরায় আরম্ভ করুন
    
  3. phpmyadmin খুলুন / যে কোনও অ্যাপ্লিকেশন যা mysql / mysql কনসোল ব্যবহার করে এবং একটি ক্যোয়ারি চালায়

  4. cat /tmp/mysql.log (আপনার জিজ্ঞাসাটি দেখতে হবে)


কিছু যায় আসে না, কেবল ডিবি

6
অবৈধ পথ আপনার কাছে /etc/my.cnf /etc/mysql/my.cnf হওয়া উচিত
মরমী কোলা

39

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

  • log_error ত্রুটি বার্তা লগ জন্য;
  • general_log_fileসাধারণ ক্যোয়ারী লগ ফাইলের জন্য (যদি এটি সক্ষম করে থাকে general_log);
  • slow_query_log_fileধীর ক্যোয়ারী লগ ফাইলের জন্য (যদি এটি সক্ষম করে থাকে slow_query_log);

সেটিংস এবং তাদের অবস্থান দেখতে, এই শেল কমান্ডটি চালান:

mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log

ত্রুটি লগের মান মুদ্রণ করতে, টার্মিনালে এই কমান্ডটি চালান:

mysql -e "SELECT @@GLOBAL.log_error"

রিয়েল টাইমে ত্রুটি লগ ফাইলের সামগ্রী পড়তে, চালান:

sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")

দ্রষ্টব্য: হিট Control- Cযখন শেষ

যখন সাধারণ লগ সক্ষম হয়, চেষ্টা করুন:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")

ব্যবহার করার জন্য mysqlপাসওয়ার্ড অ্যাক্সেস, অ্যাড সঙ্গে -pবা -pMYPASSপ্যারামিটার। এটি মনে রাখার জন্য, আপনি এটিতে আপনার কনফিগার করতে পারেন ~/.my.cnf, যেমন

[client]
user=root
password=root

সুতরাং এটি পরবর্তী সময়ের জন্য মনে রাখা হবে।


1
বা যদি আপনার একটি পাসওয়ার্ড প্রবেশ করানোর প্রয়োজন হয় তবে এটি ব্যবহার করে দেখুন: mysql -p -se "দেখান ভেরিয়েবলস" | গ্রেপ -ই লগ_অরর-সাধারণ_লগ
পল চেরনোচ

9

আমার (আমি বাতি ইনস্টল করা আছে) জন্য / etc / MySQL /my.cnf দায়ের আমি দেখেছি নিম্নলিখিত, [mysqld] বিভাগটি মন্তব্য লাইন:

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

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

sudo geany /etc/mysql/my.cnf

(আমি জেডিট বা ষষ্ঠের পরিবর্তে জিনিকে ব্যবহার করতে পছন্দ করি, এতে কিছু আসে যায় না)

আমি কেবল এগুলিকে অবিশ্রুত করেছি এবং ফাইলটি সংরক্ষণ করে তারপরে মাইএসকিএল পুনরায় বন্ধ করুন

sudo service mysql restart

বেশ কয়েকটি অনুসন্ধান চালান, উপরের ফাইলটি খুলুন (/var/log/mysql/mysql.log) এবং লগটি সেখানে ছিল :)


এটি আপনার পক্ষে কাজ করতে পারে, এটি আমার পক্ষে নয়, এমনকি "সূচক দুর্নীতিগ্রস্থ" এর মতো বড় ব্যতিক্রমগুলি লগ হয় না। কেবল স্টার্টআপ এবং শাটডাউন সমস্যা।
ব্যবহারকারী 3338098

8

মাইএসকিউএল রেফারেন্স ম্যানুয়াল থেকে:

ডিফল্টরূপে, সমস্ত লগ ফাইল ডেটা ডিরেক্টরিতে তৈরি করা হয়।

/var/lib/mysqlফোল্ডারটি পরীক্ষা করুন ।


1
তবে আমি মাইএসকিএল ফোল্ডারটি খুলতে অক্ষম। আমি মনে করি লগ ফাইলের পথটি /var/log/mysql/mysql.log তবে আমি এটি খুলতে অক্ষম, আমার কী করা উচিত?
অর্জুন

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

1
আমি সিডিটিকে এই ডিরেক্টরিতে বাধ্য করলাম (আমাকে মূল ব্যবহারকারী তৈরি করতে হয়েছিল, যা আমি পরে মুছে ফেলেছিলাম), কিন্তু যখন আমি এই ফাইলগুলি দেখি, তখন আমি ভেবেছিলাম সেগুলি এনক্রিপ্ট করা আছে :) সুতরাং আমি মনে করি এটি কোনও ভাল উপায় নয়।
লাইনে

ব্যবহার করুন sudo -sতারপর mysql ফোল্ডারে যেতে চেষ্টা করুন।
রাশেদুল ইসলাম

মাইএসকিউএল ম্যানুয়ালটি অসংখ্য অসঙ্গতিতে ভরাট, কোনওভাবে উইন্ডোতে এই জাতীয় ডিরেক্টরি নেই।
ব্যবহারকারী 3338098

3

লয়োলার জবাবের পরিপূরক হিসাবে এটি উল্লেখ করা উচিত যে মাইএসকিউএল 5.1 হিসাবে অবহিতlog_slow_queries এবং এর সাথে প্রতিস্থাপিত হয়েছেslow-query-log

ব্যবহার log_slow_queriesআপনার service mysql restartবা service mysql startব্যর্থ হতে পারে


1
shell> mysqladmin flush-logs


shell> mv host_name.err-old backup-directory

7
স্ট্যাকওভারফ্লোতে স্বাগতম। আপনার উত্তরের কোডটি ওপি-র প্রশ্নের সাথে কীভাবে প্রাসঙ্গিক তা দয়া করে আরও ব্যাখ্যা দেওয়ার বিষয়ে দয়া করে বিবেচনা করুন। এছাড়াও, সঠিক ফর্ম্যাটিং সক্ষম করতে কোডটি 4 টি স্পেসে ইন্টেন্ট করা উচিত।
পলিট্যাঙ্ক-জেড

1

উপরের উত্তরগুলি ছাড়াও আপনি নিজের কনফ ফাইলটি ম্যানুয়ালি সম্পাদনা করার পরিবর্তে লগিং বিকল্পগুলির জন্য কমান্ড লাইন প্যারামিটারগুলিতে মাইএসকিএলডি প্রক্রিয়াতে পাস করতে পারেন। উদাহরণস্বরূপ, সাধারণ লগিং সক্ষম করতে এবং একটি ফাইল নির্দিষ্ট করতে:

mysqld --general-log --general-log-file=/var/log/mysql.general.log

উপরের অন্যান্য উত্তরগুলি নিশ্চিত করা mysqld --help --verbose, আপনি কনফ ফাইল থেকে মান দেয় (সুতরাং কমান্ড লাইন বিকল্পের সাথে চলমান সাধারণ লগ FALSE হয়); যেখানে mysql -se "SHOW VARIABLES" | grep -e log_error -e general_logদেয়:

general_log     ON
general_log_file        /var/log/mysql.general.log

ত্রুটি লগের জন্য আরও কিছুটা কমপ্যাক্ট সিনট্যাক্স ব্যবহার করুন:

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