Mysql и ротация лога.

Автор fer39, 07 февраля 2019, 10:21:03

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

fer39

Проблема заключается в том что должна пройти ротация лога mysql.log -> mysql.log.1 но после ротации мы видим в файлах 0 размер. Но запись информации продолжается в удалённый файл.
root@dbmysql1-1:/home/arduser# lsof | grep deleted |grep mysql.log mysqld 916 mysql 9w REG 8,1 2670085217 3932197 /var/log/mysql/mysql.log.1 (deleted)
То же самое с error.log

Заранее спасибо, надеюсь подскажите решение проблемы.

yoric

Каким образом ротируете? В дебиане /etc/logrotate.d/* гляньте по примеру с другими, надо restart/reload или как его там как-то так.

endru

Версия Debian/mysql.
выхлоп команд:
cat /etc/logrotate.d/mysql-server*
stat /var/log/mysql/mysql.log*

и еще желательно снимок экрана с запущенным htop

fer39

# - I put everything in one block and added sharedscripts, so that mysql gets
#   flush-logs'd only once.
#   Else the binary logs would automatically increase by n times every day.
/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/error.log {
daily
rotate 7
missingok
create 640 mysql adm
compress
sharedscripts
postrotate
test -x /usr/bin/mysqladmin || exit 0
# If this fails, check debian.conf!
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
  # Really no mysqld or rather a missing debian-sys-maint user?
  # If this occurs and is not a error please report a bug.
  #if ps cax | grep -q mysqld; then
  if killall -q -s0 -umysql mysqld; then
    exit 1
  fi
else
  $MYADMIN flush-logs
fi
endscript
}

  Файл: «/var/log/mysql/mysql.log»
  Размер: 0          Блоков: 0          Блок В/В: 4096   пустой обычный файл
Устройство: 801h/2049d Inode: 3932243     Ссылки: 1
Доступ: (0640/-rw-r-----)  Uid: (  108/   mysql)   Gid: (    4/     adm)
Доступ: 2019-02-08 06:25:05.784000000 +0200
Модифицирован: 2019-02-08 06:25:05.784000000 +0200
Изменён: 2019-02-08 06:25:05.784000000 +0200
Создан: -
  Файл: «/var/log/mysql/mysql.log.1»
  Размер: 0          Блоков: 0          Блок В/В: 4096   пустой обычный файл
Устройство: 801h/2049d Inode: 3932244     Ссылки: 1
Доступ: (0640/-rw-r-----)  Uid: (  108/   mysql)   Gid: (    4/     adm)
Доступ: 2019-02-07 06:25:05.972000000 +0200
Модифицирован: 2019-02-07 06:25:05.972000000 +0200
Изменён: 2019-02-08 06:25:05.784000000 +0200
Создан: -

endru

в стандартном конфиге вроде бы проблем нет, но сдается мне, что кто-то мудрил с ротацией, и не правильно указал данные. смотри какие еще файлы есть, которые работают с файлами mysql.
если нужно достать текущий лог для изучения, или просто чтобы не потерялся, вот пример как вытащить https://www.percona.com/blog/2014/11/12/log-rotate-and-the-deleted-mysql-log-file-mystery/

fer39

/etc/mysql/debian.cnf                                                                                                              277/277               100%
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = root
password =
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = root
password =
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Я думаю понял проблему, сюда нужно пароль от root пользователя БД внести.
Иначе:
mysqladmin --defaults-file=/etc/mysql/debian.cnf --local flush-error-log flush-engine-log flush-general-log flush-slow-log     mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'


svtv1

  fer39
Извини может я и не прав, но  пробовал(а) делать это (->) через su -.    ???
"Если достаточно долго сидеть возле реки - мимо проплывет труп твоего врага"

fer39

#7
Цитата: svtv1 от 10 февраля 2019, 02:28:50
  fer39
Извини может я и не прав, но  пробовал(а) делать это (->) через su -.    ???
Хм пароль от пользователя БД root в таблице mysql находиться, к системному паролю root пользователя отношение не имеет.

endru

Цитата: fer39 от 09 февраля 2019, 07:35:33Я думаю понял проблему, сюда нужно пароль от root пользователя БД внести.
Цитата: fer39 от 09 февраля 2019, 07:35:33mysqladmin --defaults-file=/etc/mysql/debian.cnf --local flush-error-log flush-engine-log flush-general-log flush-slow-log     mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
откуда вообще эти строки?

fer39

#9
Цитата: endru от 11 февраля 2019, 12:40:13
Цитата: fer39 от 09 февраля 2019, 07:35:33Я думаю понял проблему, сюда нужно пароль от root пользователя БД внести.
Цитата: fer39 от 09 февраля 2019, 07:35:33mysqladmin --defaults-file=/etc/mysql/debian.cnf --local flush-error-log flush-engine-log flush-general-log flush-slow-log     mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
откуда вообще эти строки?
Именно это команда взятая /etc/logrotate.d/mysql-server с MariaDB, там проблема один в один, но сам смысл от этого не меняется.
Тот основной сервер, дёргать пока нельзя.

endru

сложно помочь, когда человек не желает помочь даже себе. ни версии системы ни mysql.

https://dev.mysql.com/doc/refman/8.0/en/mysqladmin.html здесь вся информация по ключам. нужно сделать правильную команду и все будет работать.

fer39

Connection id: 1044830
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.49-0+deb8u1-log (Debian)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db     characterset: utf8
Client characterset: utf8
Conn.  characterset: utf8
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 4 days 5 hours 1 min 39 sec

Сам себе я уже помог всё работает......