লোগ্রোটেট লগগুলি ঘোরান না


24

আমার এই লোগ্রোটেট কনফিগারেশন রয়েছে এবং আমি উবুন্টু 10.04 এ চলছে।

/var/log/mysql/mysql-slow.log {
    daily
    rotate 3
    compress
    notifempty
    missingok
    create 660 mysql adm
    postrotate 
    if test -x /usr/bin/mysqladmin && \
       /usr/bin/mysqladmin  ping &>/dev/null
    then
       /usr/bin/mysqladmin  flush-logs
    fi
endscript

}

আমি গতকাল /etc/logrotate.d এ রেখেছি এবং আজ লগটি ঘোরানো হয়নি।

নীচে আমি যে জিনিসগুলি করেছি তা নীচে:

  1. আমি যাচাই করেছি যে লগটি সত্যই /var/log/mysql/mysql-slow.log এ রয়েছে
  2. রুট হিসাবে চালিত হলে mysqladmin লাইনগুলি সূক্ষ্মভাবে কাজ করে
  3. মাইএসকিএল মাইএসকিএল - স্লো.লগ লিখতে সক্ষম

যখন আমি এটি করেছি:

$ logrotate -d -f mysql-slow

reading config file mysql-slow
reading config info for /var/log/mysql/mysql-slow.log 

Handling 1 logs

rotating pattern: /var/log/mysql/mysql-slow.log  forced from command line (3 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/mysql/mysql-slow.log

log needs rotating
rotating log /var/log/mysql/mysql-slow.log, log->rotateCount is 3
dateext suffix '-20120329'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/mysql/mysql-slow.log.3.gz to /var/log/mysql/mysql-slow.log.4.gz     (rotatecount 3, logstart 1, i 3), 
renaming /var/log/mysql/mysql-slow.log.2.gz to /var/log/mysql/mysql-slow.log.3.gz (rotatecount 3, logstart 1, i 2), 
renaming /var/log/mysql/mysql-slow.log.1.gz to /var/log/mysql/mysql-slow.log.2.gz (rotatecount 3, logstart 1, i 1), 
renaming /var/log/mysql/mysql-slow.log.0.gz to /var/log/mysql/mysql-slow.log.1.gz (rotatecount 3, logstart 1, i 0), 
renaming /var/log/mysql/mysql-slow.log to /var/log/mysql/mysql-slow.log.1
creating new /var/log/mysql/mysql-slow.log mode = 0660 uid = 20004 gid = 4
running postrotate script
running script (multiple) with arg /var/log/mysql/mysql-slow.log : " 
    if test -x /usr/bin/mysqladmin && \
       /usr/bin/mysqladmin &>/dev/null
    then
       /usr/bin/mysqladmin flush-logs
    fi
"
compressing log with: /bin/gzip
removing old log /var/log/mysql/mysql-slow.log.4.gz
  1. লোগ্রোটেট সফল হয়েছিল তা দেখায় লগটি কোথায়? আমি দেখতে চাই যে এখানে এমন কিছু আছে যা বলবে যে এখানে সমস্যা ছিল।
  2. লোগ্রোটেট কেন কাজ করছে না সে সম্পর্কে কোনও ধারণা?

সুতরাং এটি কাজ করে যখন হাত দ্বারা মৃত্যুদন্ড কার্যকর করা হয়? হয় crondচলমান?
কাইল স্মিথ

হ্যাঁ এটি কার্যকর হয়, যদি আপনি লোগ্রোটেট -ফ mysql_slow_query বোঝাতে চান। আর ক্রন্ড চলছে।
কারম্যান

আপনি কি নিশ্চিত যে ইতিমধ্যে অন্য কোনও কনফিগারেশন নেই যা সেই লগ ফাইলটি হ্যান্ডেল করার কথা? সম্ভবত mysql-server? চালান grep '/var/log/mysql' /etc/logrotate.d/*
জোড়াদেচি

আমি সেই কমান্ডটি চালিয়েছি এবং কেবল আমার কনফিগারেশনটি / var / লগ /
কারমেন

দিনের কোন সময় আপনার উবুন্টু সেটআপে প্রতিদিনের ক্রোন জবগুলি চালিত হয়? আপনি সেই তথ্যটি /etc/crontabফাইলটিতে খুঁজে পেতে পারেন যেটি শেষ হয় /etc/cron.daily )। ইতিমধ্যে আপনি ক্রোন দৈনিক কাজ ইতিমধ্যে চালু হওয়ার পরে লোগ্রোটেট কনফিগারেশন তৈরি করেছেন?
সমৃদ্ধশালী

উত্তর:


47

একটি সাধারণ সমস্যা হ'ল আপনি যখন প্রথমে দৈনিক লোগ্রোটেট.ডি এন্ট্রি সেটআপ করেন, এটি প্রথম দিনটি ঘোরবে না। আপনি যখন সময় ভিত্তিক ঘূর্ণন (দৈনিক / সাপ্তাহিক / মাসিক) ব্যবহার করেন লোগ্রোটেট শেষ তারিখের তারিখের স্ট্যাম্প স্ক্রিবল করে যা এটি ফাইলটিতে /var/lib/logrotate/status(বা /var/lib/logrotate.statusআরএইচইএল সিস্টেমগুলিতে) দেখেছিল ।

স্ক্রিবলড তারিখ ভবিষ্যতের রান থেকে রেফারেন্সের তারিখে পরিণত হয় logrotate'দৈনিক' ঘূর্ণন তুলনা করতে ব্যবহার করবে। যেহেতু ডিফল্ট ক্রোন জব প্রতিদিন চালিত হয়, এটি সাধারণত দৈনন্দিন কাজের ক্ষেত্রেই সমস্যা।

আপনি এই সমস্যাটি দুটি উপায়ে এড়াতে পারবেন;

  1. চালান sudo logrotate -f /etc/logrotate.d/<my rotate job>

    • এটি স্থিতি ফাইলে তারিখটি স্ক্রিবল করবে এবং লগগুলি ঘোরান

  2. /var/lib/logrotate/statusলাইনটি সম্পাদনা করুন এবং ম্যানুয়ালি যুক্ত করুন:

    "/var/log/my_special.log" 2013-4-8

    • আজকের বা পূর্বের তারিখে সেট করা। পরবর্তী রানের কারণে এটি চালানো উচিত।

চ্যাম্পের মতো কাজ করে!
শেঠ

6
আসলে এটা করে যখন ব্যবহার ঘোরান লগ -f(অন্তত আমার আরএইচ ব্যুৎপন্ন তে) খুলুন।
বুফ

12
-fফোর্স রোটেশনের -dজন্য, ডিবাগের জন্যও ডিবাগ শুকনো রান বোঝায় তাই চালু থাকাকালীন আসলে কোনও পরিবর্তন করা হবে না -d
থারস্মমনার

1
-dবোঝানো শুকনো রান একটি কৌতুকপূর্ণ। কোনও পরিবর্তন আনা হচ্ছে না, এবং যতক্ষণ না আমি এই সত্যটি উপলব্ধি করি ততক্ষণ আমার মাথা চুলকানো ছিল।
আর্টেম রাশাকোভস্কিই

5

নিম্নলিখিত স্লাইসহোস্ট নিবন্ধ অনুযায়ী:

উবুন্টুতে লোগ্রোটেট বোঝা - পার্ট 2 http://articles.slicehost.com/2010/6/30/ বোঝাবু- लॉग্রোটেট-on-ubuntu-part-2

... /var/lib/logrotate/statusফাইলটি সর্বশেষ প্রতিটি লগ ফাইলটি কখন ঘোরানো হয়েছিল সে সম্পর্কে তথ্য সংরক্ষণ করেLogrotate র manpage বলছেন যে একটি "রাষ্ট্র ফাইল" বলা হয়।

সার্ভারফল্টে এখানে আরও একটি আলোচনা রয়েছে যা দরকারী হতে পারে:

লোগ্রোটেট কীভাবে "দৈনিক" হ্যান্ডেল করে?

সেই আলোচনায়, "ম্যাডহ্যাটার" "স্ট্যাটাস" (রাষ্ট্র) ফাইল সম্পর্কিত নিম্নলিখিত সম্পর্কে বলেছেন:

"প্রতিটি ফাইলের একটি লাইন থাকে, যা শেষ তারিখটি শেষ তারিখটি ঘোরানো হয়েছিল; আপনি যদি এমন একটি তারিখে লোগ্রোটেট চালান যে কোনও প্রদত্ত ফাইলটি আবর্তনের জন্য, ফাইলটিতে বর্তমান তারিখ এবং তারিখের মধ্যে সংখ্যার দিন প্রদত্ত () প্রতিদিনের জন্য 1, সাপ্তাহিকের জন্য 7, ইত্যাদি), ফাইলটি ঘোরানো হবে। "

আশা করি এটা কাজে লাগবে.


0

যদি mysqladminকোনও ব্যবহারকারীর বা পাসওয়ার্ডের প্রয়োজন হয় তবে /root/.my.cnfএটি বিন্যাস ছাড়াই কনফিগারেশন থেকে এটি পড়বে না ।

কী হচ্ছে তা দেখতে লগারে আপনার আউটপুটটি পাইপ করার চেষ্টা করুন।

  postrotate
      # just if mysqld is really running
      if test -x /usr/bin/mysqladmin && \
         /usr/bin/mysqladmin ping &>/dev/null
      then
         env HOME=/root/ /usr/bin/mysqladmin flush-logs 2>&1 | logger
      else
         logger "mysqladmin ping failed so not rotating mysql logs"
      fi
  endscript

মাইএসকিউএল ঘোরানোর পরে নতুন ফাইলটিতে ত্রুটি লগ করে না?

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