[Системное администрирование, IT-инфраструктура] Как ускорить миграцию Zabbix на TimescaleDB
Автор
Сообщение
news_bot ®
Стаж: 7 лет 2 месяца
Сообщений: 27286

После того, как в прошлой статье Как мигрировать Zabbix с MySQL на PostgreSQL с минимальным downtime я успешно перенес Zabbix с MySQL на PostgreSQL, встала необходимость сделать следующий шаг — мигрировать БД на TimescaleDB, т.к. ради нее все и затевалось.
У читателя может возникнуть вопрос: зачем нужна эта статья, если есть простой и понятный мануал?
Но проблема, как и в прошлой статье, скрыта в downtime. В мануале ясно написано:
The migration of existing history and trend data may take a lot of time. Zabbix server and frontend must be down for the period of migration.
Исходные данные следующие:
- Zabbix 5.0
- СУБД PostgreSQL 12
- Применен патч ENABLING EXTENDED RANGE OF NUMERIC (FLOAT) VALUES
- Установлен TimescaleDB 1.7 (поддержка 2.0 пока отсутствует)
Я всячески игрался с тюнингом PostgreSQL, добавлял ресурсы на виртуальную машину с PostgreSQL. Испытанный максимум ресурсов — 24 CPU, 64 GB RAM. Но, очевидно, скрипт миграции упирается в дисковую производительность. В итоге при моей базе данных размером в ~350 Гб миграция занимала 15 часов. Все это время мониторинг отключен.
Я пошел читать документацию TimescaleDB по миграции данных и нашел такой способ, обозначенный как "Faster Method":
- выбираем таблицу, которую хотим мигрировать в гипертаблицу. Например, history
- создаем новую таблицу, аналогичную старой, при этом исключая индексы
CREATE TABLE history_new (LIKE history INCLUDING DEFAULTS INCLUDING CONSTRAINTS EXCLUDING INDEXES);
- конвертируем новую таблицу в гипертаблицу
SELECT create_hypertable('history_new', 'clock', chunk_interval => 86400);
- перемещаем все данные из history в history_new
INSERT INTO history_new SELECT * FROM history;
- удаляем старую таблицу history
DROP TABLE IF EXISTS history;
- переименовываем history_new в history
ALTER TABLE IF EXISTS history_new RENAME TO history;
- создаем индекс (как — описано в файле схемы БД schema.sql)
CREATE INDEX history_1 in history (itemid,clock);
И так надо сделать для таблиц:
- history
- history_log
- history_str
- history_text
- history_uint
- trends
- trends_uint
Для ускорения процесса я поместил команды для каждой таблицы в отдельные файлы, чтобы запускать их параллельно.
Ссылка на github репозиторий со скриптами:
https://github.com/niklep/zabbix_timescaledb_scripts
Скрипт finish.sql необходимо выполнить уже после завершения миграции всех таблиц.
В итоге миграция таблиц в гипертаблицы TimescaleDB в моем случае заняла 5 часов, что сильно меньше изначальных 15.
PROFIT.
===========
Источник:
habr.com
===========
Похожие новости:
- [Информационная безопасность, Системное администрирование, DevOps, Kubernetes] 10 Kubernetes Security Context, которые необходимо понимать (перевод)
- [IT-инфраструктура, Машинное обучение] ML не в радость: что может провалить проект по внедрению machine learning
- [Информационная безопасность, Системное администрирование, IT-инфраструктура, Софт] FreeBSD. Трансляции, тэги и якоря в PF
- [Oracle, PostgreSQL, Администрирование баз данных, ERP-системы] Хватит это терпеть: как мы обновили архитектуру системы мониторинга автотранспорта на 15 000 машин и 17 000 магазинов
- [Системное администрирование, Сетевые технологии, Сетевое оборудование, DIY или Сделай сам] На коленке: агрегация VPN, или Надежная связь на ненадежных каналах
- [Системное администрирование, Сетевые технологии, Облачные сервисы, Сетевое оборудование] Построение сети в загородном доме — нюансы и возможности
- [Системное администрирование, Серверное администрирование, Резервное копирование, Хранение данных] CDP для самых маленьких
- [IT-инфраструктура, Big Data, Разработка под e-commerce, Карьера в IT-индустрии] IT-2021: Где деньги?
- [Информационная безопасность, Системное администрирование, Сетевые технологии] Honeypot на RouterOS
- [IT-инфраструктура, IT-эмиграция, Гаджеты, Софт] Как закон о предустановке российского софта изменит отечественный IT-рынок
Теги для поиска: #_sistemnoe_administrirovanie (Системное администрирование), #_itinfrastruktura (IT-инфраструктура), #_monitoring (мониторинг), #_zabbix, #_timescaledb, #_sistemnoe_administrirovanie (
Системное администрирование
), #_itinfrastruktura (
IT-инфраструктура
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 26-Апр 22:32
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 7 лет 2 месяца |
|
![]() После того, как в прошлой статье Как мигрировать Zabbix с MySQL на PostgreSQL с минимальным downtime я успешно перенес Zabbix с MySQL на PostgreSQL, встала необходимость сделать следующий шаг — мигрировать БД на TimescaleDB, т.к. ради нее все и затевалось. У читателя может возникнуть вопрос: зачем нужна эта статья, если есть простой и понятный мануал? Но проблема, как и в прошлой статье, скрыта в downtime. В мануале ясно написано: The migration of existing history and trend data may take a lot of time. Zabbix server and frontend must be down for the period of migration.
Я всячески игрался с тюнингом PostgreSQL, добавлял ресурсы на виртуальную машину с PostgreSQL. Испытанный максимум ресурсов — 24 CPU, 64 GB RAM. Но, очевидно, скрипт миграции упирается в дисковую производительность. В итоге при моей базе данных размером в ~350 Гб миграция занимала 15 часов. Все это время мониторинг отключен. Я пошел читать документацию TimescaleDB по миграции данных и нашел такой способ, обозначенный как "Faster Method":
И так надо сделать для таблиц:
Для ускорения процесса я поместил команды для каждой таблицы в отдельные файлы, чтобы запускать их параллельно. Ссылка на github репозиторий со скриптами: https://github.com/niklep/zabbix_timescaledb_scripts Скрипт finish.sql необходимо выполнить уже после завершения миграции всех таблиц. В итоге миграция таблиц в гипертаблицы TimescaleDB в моем случае заняла 5 часов, что сильно меньше изначальных 15. PROFIT. =========== Источник: habr.com =========== Похожие новости:
Системное администрирование ), #_itinfrastruktura ( IT-инфраструктура ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 26-Апр 22:32
Часовой пояс: UTC + 5