SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.04.2019 10:06:09

Grey1406
Участник
Зарегистрирован: 22.04.2019
Сообщений: 3

Binlog не очищается автоматически

Всем добрый день, уже не первый день борюсь с проблемой
бинарные логи не удаляются автоматически, все параметры установлены корректно,
версия mysql
mysql Ver 8.0.13 for Linux on x86_64 (MySQL Community Server - GPL)

OS CentOS 7

Пробовал выставлять как binlog_expire_logs_seconds=604800, так и expire_logs_days=5
на данный момент очистку провожу вручную каждые 5-7 дней
PURGE BINARY LOGS BEFORE '2019-04-17 00:00:00';


пробовал рестартовать машины, какое то время чистятся штатно, затем перестают, может какой процесс mysql перестает работать ? может можно это как обнаружить?

текущая структура мастер->3 слейва, проблема возникает как на мастере, так и на слейвах
в давние времена была попытка настроить групповую репликацию, может это как то влиять ?

в логах mysql на слейвах периодически появляется ошибка
2019-04-20T09:00:00.415605Z 809256 [Warning] [MY-010956] [Server] Invalid replication timestamps: original commit timestamp is more recent than the immediate commit timestamp. This may be an issue if dela
yed replication is active. Make sure that servers have their clocks set to the correct time. No further message will be emitted until after timestamps become valid again.
2019-04-20T09:00:00.417635Z 809256 [Warning] [MY-010957] [Server] The replication timestamps have returned to normal values
на мастер сервере в логах нет никаких ошибок


Готов приложить любые логи и ответить на любые вопросы

Помогите решить проблему с автоматической очисткой бинлогов ?

P.S. прилагаю текущий конфиг серверов , различия мастер-реплика незначительны
------------------------------------------------------------------------------------------------------------------------------------------------------------
tmpdir = /mnt/mysql-data/tmp
innodb_tmpdir = /mnt/mysql-data/tmp
datadir=/mnt/mysql-data
log-bin=/mnt/mysql-binlog/ru-log-bin
#binlog_expire_logs_seconds=604800
expire_logs_days=5
default_time_zone= 'Asia/Krasnoyarsk'

innodb_page_size=16k
sql_mode=NO_ENGINE_SUBSTITUTION
innodb_buffer_pool_size=30GB
innodb_log_buffer_size=1G
innodb_log_file_size=1G
innodb_sort_buffer_size=1G
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=1
innodb_io_capacity=2000
innodb_io_capacity_max=20000
innodb_doublewrite=1
innodb_temp_tablespaces_dir=/mnt/mysql-data/#innodb_temp/
max_allowed_packet=1G
max_connections=4000
join_buffer_size=256M
thread_cache_size=5351
key_buffer_size=2M

slow_query_log = ON
slow_query_log_file = '/mnt/mysql-data/slow.log'
long_query_time = 3

innodb_open_files=1000
table_open_cache=1000

socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

server-id = 15345
read_only=0

default_authentication_plugin = mysql_native_password

#loose-group_replication_start_on_boot = ON
#loose-group_replication_local_address = 192.168.153.45:33061
#report_port = 3306
#report_host = 192.168.153.45

#gtid-mode=ON
gtid-mode=OFF

#enforce_gtid_consistency=ON
enforce_gtid_consistency=OFF
------------------------------------------------------------------------------------------------------------------------------------------------------------

P.P.S. если совершил ошибки в оформлении прошу понять, простить и подсказать

Неактивен

 

#2 22.04.2019 12:09:18

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Binlog не очищается автоматически

Давайте, раз у вас восьмерка, всё-таки работать с binlog_expire_logs_seconds. И давайте попробуем выставлять консистентные значения. Для пяти суток это должно быть:

expire_logs_days = 0 (отключить)
binlog_expire_logs_seconds = 432000 ( = 86400 * 5, у вас в примере число больше )

Неактивен

 

#3 23.04.2019 05:41:05

Grey1406
Участник
Зарегистрирован: 22.04.2019
Сообщений: 3

Re: Binlog не очищается автоматически

Это да, документация и логи прямо говорят использовать binlog_expire_logs_seconds, он так же был установлен,
после рестарта сервера все работает какое время (пробовал и день и два ставить , не ждать же неделю пока будет видно)
Разные значения, потому что раньше хранили за 7 дней, сейчас трафик на проекте вырос, бинлогов в день стало больше, было принято временное решение хранить за 5 дней

то есть что expire_logs_days , что binlog_expire_logs_seconds после рестарта работают оба, затем перестают, трудно поймать точный момент когда перестают, но в логах нет никакой информации

Неактивен

 

#4 23.04.2019 20:10:09

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Binlog не очищается автоматически

Звучит достаточно странно, как ошибка, но на bugs.mysql.com я похожей не нашел, не похоже, чтобы она была массовой.

Если сможете сделать воспроизводимый кейс, то заведите, пожалуйста, соответствующую багу, чтобы ее починили.

Как костыль — могу предложить в cron добавить строку вида

0 1 * * *   root   mysql -e "PURGE BINARY LOGS BEFORE NOW() - INTERVAL 5 DAY"

(или аналогичную в event scheduler)

Неактивен

 

#5 24.04.2019 05:09:49

Grey1406
Участник
Зарегистрирован: 22.04.2019
Сообщений: 3

Re: Binlog не очищается автоматически

Согласен, это очень странно, самое странное, что нет никаких сообщений в логах, поэтому никак не получается отловить и понять причину
с воспроизведением так же проблемы, но я продолжу попытки,
очень не хочется воротить костыли, но перед майскими выходными похоже придется

paulus, спасибо за участие,
буду рад если откроется еще какая либо информация от кого либо

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson