Comments 14
awsswa.livejournal.com/45940.html
Я, может, что-то пропустил, но я не понял, зачем переходить с mySQL на PostgreSQL? mySQL чем-то не устраивал?
Например, одна из самых назойливых проблем при работе Zabbix на реляционной БД — медленный Housekeeper. Хотя бы для решения этой проблемы уже стоит мигрировать.
Нашел статью:
habr.com/ru/company/oleg-bunin/blog/470902
Ради timescale же
Скорее просто раньше было всё равно, а тут Постгрес стал устраивать больше, ибо
"В свете того, что Zabbix с некоторых пор поддерживает TimescaleDB"
Если верно понимаю, TimescaleDB — это расширение Постгреса для оптимизации операций с временными рядами. Если в Zabbix завезли интеграцию с этой штукой, то почему бы не переехать на Постгрес.
При большой нагрузке MySQL просто умирает. Достаточная причина?
Интересно, а если мигрировать исторические данные pgloader'ом в отдельный инстанс постгреса, а потом сделать dump/restore в основной, не получилось бы избежать проблемы? По идее восстановление дампа может оказаться эффективнее.
Проще было бы заставить PGLoader заливать данные небольшими транзакциями по-моему. Есть ли там такая фича или нет — не знаю, но необходимость её очевидна. Указал там батч в 100к строк и коммитишь после него.
Потенциально эффективнее тем, что не надо считывать данные из mysql и ждать его. Восстановление одной таблицы это одна команда COPY, так что она либо восстановится, либо нет.
Заббиксо-специфичный хинт: можно восстанавливать только таблицы с тендами, т.к. сами данные как правило все равно удаляются через 7-14 дней. На этом периоде графики были бы видны при масштабе более 1 дня. Таблицы с трендами как правило небольшие.
Сюда же вброшу postgres-специфичный хинт: можно восстанавливать в таблицу с другим именем, а затем подключить её через inherits к основной. Вам бы потенциально помогло с экспериментами, т.к. в эту таблицу писали бы только вы.
Плюс по доке: пишут что pgloader грузит данные батчами по умолчанию, и при неудаче старается выпилить плохие строки и повторить вставку. Если там нет создания хитрых функций чтобы избегать отмены транзакии при ошибке, то получается что таки он грузит не в одной транзакции. (но это не точно)
https://pgloader.readthedocs.io/en/latest/pgloader.html#batches-and-retry-behaviour
Как мигрировать Zabbix с MySQL на PostgreSQL с минимальным downtime