ganapathi / rpms / mariadb

Forked from rpms/mariadb 4 years ago
Clone
Blob Blame History Raw
Adjust the mysql-log-rotate script in several ways:

* Use the correct log file pathname for Red Hat installations.
* Enable creation of the log file by logrotate (needed since
  /var/log/ isn't writable by mysql user); and set the same 640
  permissions we normally use.
* Comment out the actual rotation commands, so that user must edit
  the file to enable rotation.  This is unfortunate, but the fact
  that the script will probably fail without manual configuration
  (to set a root password) means that we can't really have it turned
  on by default.  Fortunately, in most configurations the log file
  is low-volume and so rotation is not critical functionality.

See discussions at RH bugs 799735, 547007
* Note they are from Fedora 15 / 16

Update 3/2017
* it would be big unexpected change for anyone upgrading, if we start shipping it now.
  Maybe it is good candidate for shipping with MariaDB 10.2 ?
* the 'mysqladmin flush logs' doesn´t guarantee, no entries are lost
  during flushing, the operation is not atomic.
  We should not ship it in that state

Update 6/2018
* the SIGHUP causes server to flush all logs. No password admin needed, the only constraint is
  beeing able to send the SIGHUP to the process and read the mysqld pid file, which root can.
* Submited as PR: https://github.com/MariaDB/server/pull/807

--- mariadb-10.3.7/support-files/mysql-log-rotate.sh	2018-05-23 22:38:46.000000000 +0200
+++ mariadb-10.3.7/support-files/mysql-log-rotate.sh_patched	2018-06-27 12:11:23.705719826 +0200
@@ -1,25 +1,12 @@
 # This logname can be set in /etc/my.cnf
 # by setting the variable "err-log"
-# in the [safe_mysqld] section as follows:
+# in the [mysqld] section as follows:
 #
-# [safe_mysqld]
-# err-log=@localstatedir@/mysqld.log
-#
-# If the root user has a password you have to create a
-# /root/.my.cnf configuration file with the following
-# content:
-#
-# [mysqladmin]
-# password = <secret> 
-# user= root
-#
-# where "<secret>" is the password. 
-#
-# ATTENTION: This /root/.my.cnf should be readable ONLY
-# for root !
+# [mysqld]
+# log_error=@LOG_LOCATION@
 
-@localstatedir@/mysqld.log {
-        # create 600 mysql mysql
+@LOG_LOCATION@ {
+        create 600 mysql mysql
         notifempty
 	daily
         rotate 3
@@ -27,11 +14,9 @@
         compress
     postrotate
 	# just if mysqld is really running
-	if test -x @bindir@/mysqladmin && \
-	   @bindir@/mysqladmin ping &>/dev/null
-	then
-	   @bindir@/mysqladmin --local flush-error-log \
-              flush-engine-log flush-general-log flush-slow-log
-	fi
+        if [ -e @PID_FILE_DIR@/@DAEMON_NO_PREFIX@.pid ]
+        then
+           kill -1 $(<@PID_FILE_DIR@/@DAEMON_NO_PREFIX@.pid)
+        fi
     endscript
 }