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


14

সমস্যা সমাধান হয়েছে তবে আমি ভবিষ্যতের রেফারেন্সের জন্য লিখছি।

/root/.my.cnf

[mysqladmin]
user            = root
password        = pa$$w0rd

/etc/logrotate.d/mysql

/var/log/mysql-slow.log /var/log/mysqld.log {
    daily
    rotate 7
    dateext
    compress
    missingok
    #notifempty
    sharedscripts
    create 644 mysql mysql
    postrotate
        /usr/bin/mysqladmin flush-logs
    endscript
}

logrotate কমান্ড লাইন থেকে চালানোর সময় ভাল কাজ করছে:

# logrotate -v -f /etc/logrotate.d/mysql

সকাল 4 টায় ক্রোন থেকে চলার সময় এটি কাজ করে না লগ ফাইলটি ঘোরানো হয়েছিল তবে মাইএসকিউএল নতুন তৈরি হওয়া ফাইলটিতে ত্রুটিটি লগ করে না:

-rw-r--r-- 1 mysql mysql      0 Aug  7 10:13 /var/log/mysqld.log
-rw-r--r-- 1 mysql mysql     20 Aug  4 04:04 /var/log/mysqld.log-20120804.gz
-rw-r--r-- 1 mysql mysql     20 Aug  5 04:04 /var/log/mysqld.log-20120805.gz
-rw-r--r-- 1 mysql mysql     20 Aug  6 16:28 /var/log/mysqld.log-20120806.gz

উত্তর:


12

এর মধ্যে postrotate, আমি কী ঘটে তা দেখতে একটি স্ট্রটার এবং স্টডআউট উভয়কে একটি লগ ফাইলে পুনঃনির্দেশ করি:

postrotate
    /usr/bin/mysqladmin flush-logs > /var/log/mysqladmin.flush-logs 2>&1
endscript

যা পাই তা হ'ল:

/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

মনে হচ্ছে লোগ্রোটেট চলাকালীন mysqladminপড়ে না /root/.my.cnf

সুতরাং, এটি চেষ্টা করুন:

postrotate
    env HOME=/root/ /usr/bin/mysqladmin flush-logs > /var/log/mysqladmin.flush-logs 2>&1
endscript

সূত্র:


1

আমারও একই সমস্যা ছিল।

যোগ করার পরে আমি মাইএসকিউএল পুনরায় চালু করিনি /root/.my.cnf, সুতরাং পোস্ট্রোটেট ফ্লাশ কমান্ডটি চালানো হয়নি।

আমি মাইএসকিউএল পুনরায় চালু করার পরে এটি রুট my.cnf ফাইলটি পড়ে এবং প্রত্যাশার মতো কাজ করে।


0

আমার ক্ষেত্রে, ব্লকটি /etc/logrotate.d/mysqlকিছুটা আলাদা দেখায়:

postrotate
        test -x /usr/bin/mysqladmin || exit 0

        if [ -f `my_print_defaults --mysqld | grep -oP "pid-file=\K[^$]+"` ]; then
            # If this fails, check debian.conf!
            mysqladmin --defaults-file=/etc/mysql/debian.cnf flush-logs
        fi
endscript

মন্তব্যটি নোট করুন: "এটি যদি ব্যর্থ হয় তবে ডিবিয়ানকন্ট পরীক্ষা করুন!" এবং কমান্ডটির প্যারামিটার রয়েছে --defaults-file=/etc/mysql/debian.cnf। এই ফাইলটির খুব একই [client]বিভাগ ছিল, rootখালি পাসওয়ার্ড সহ ব্যবহারকারীকে সংজ্ঞায়িত করে । স্পষ্টতই, খুব একই পাসওয়ার্ড ব্যবহার /root/.my.cnfকরা হয় সেই ফাইলটিতেও রাখতে হবে। সুরক্ষার ভিত্তিতে, এর /etc/mysql/debian.cnfঅনুরূপ /root/.my.cnf: এর মালিকানাধীন root:rootএবং এতে কমপ্লেড 0600


0

সুতরাং, আমার ক্ষেত্রে, debian-sys-maintব্যবহারকারীর জন্য একটি অনুমতি সমস্যা রয়েছে , কারণ, galera-clusterপ্রতিটি নোডের সাথে একই অখণ্ডতা রয়েছে, যদিও, প্রতিটি নোড পৃথকভাবে ইনস্টল করে, প্রত্যেকটির জন্য ডেবিয়ান ব্যবহারকারী, যা কনফিগারেশন ফাইলটি/etc/mysql/debian.cnf

তাই logrotatefile:

postrotate
    test -x /usr/bin/mysqladmin || exit 0
    if [ -f `my_print_defaults --mysqld | grep -oP "pid-file=\K[^$]+"` ]; then
        # If this fails, check debian.conf!
        mysqladmin --defaults-file=/etc/mysql/debian.cnf --local flush-error-log \
          flush-engine-log flush-general-log flush-slow-log
    fi
endscript

সমাধানটি এত সহজ, কেবলমাত্র debian-sys-maintএকটি নোডে ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করুন এবং প্রতিটি নোডে '/etc/mysql/debian.cnf' ফাইলটিতে পাসওয়ার্ড সেট করুন

SET PASSWORD FOR 'debian-sys-maint'@'localhost' = password('YOUR PASSWORD');

আমি আশা করি, এটি আমার হিসাবে কার্যকর হবে।

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