MySQL Server увеличивает объем памяти, Galera Cluster - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть приложение PHP ( Laravel 5.7 ), подключенное к кластеру БД на базе кластера Galera.Каждый вечер я запускаю cron job, чтобы очистить тысячи таблиц журнала из таблиц БД.Я запускаю Delete оператор MySQL для удаления строк в таблице на основе диапазона отметок времени.

Мои операции удаления выглядят как

DB::delete('DELETE FROM incoming_logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 1 DAY)');
DB::delete('DELETE FROM provisioning_logs WHERE created_at < DATE_SUB(NOW(), INTERVAL '.Config::get('app.keep_provisioning_logs') .' DAY)');

ПРИМЕЧАНИЕ: И они определены в консольных командах Laravel и тех командах, которые запланированы в задачах Laravel.

Проблема: Каждый раз после запуска задания cron удалить огромный объем данных: Main memory измаксимальное количество серверов БД, и когда я вручную очищаю кеш-память с помощью следующей команды, я получаю Main Memory бесплатно.

sync; echo 1 > /proc/sys/vm/drop_caches

Мне нужно знать, почему кеш не повторно автоматически запрашивается, илипочему после задания cron моя память вышла так же, как и я столкнулся с проблемой too many connection ошибки на MySQL.

Или это только потому, что мои серверы БД ( Всего 3 сервера БД под балансировщиком нагрузки)и синхронизация с использованием galena) синхронизация в реальном времени, поэтому, когда я пытаюсь удалить тысячи записей с помощью задания cron, сервер, который получает этот запрос на удаление, пытается удалить и поддерживать кэш для синхронизации с другими БД?Я не уверен, что происходит.Помогите, пожалуйста, решить проблему с максимизацией памяти.

Моя архитектура:
Один балансировщик нагрузки (прокси HA с тремя БД под ним) и кластер galera для синхронизации данных между этими тремя БД.

1 Ответ

0 голосов
/ 19 декабря 2018

Вы удаляете половину таблицы каждую ночь?Подумайте об удалении стоимости часа каждый час.

У вас есть INDEX(created_at)?Это помогло бы почасовой очистке, хотя, возможно, и не ежедневной очистке.

Эта задача отлично подходит для PARTITIONing.

Об этих и других методах обсуждается здесь .

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