Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
work:zabbix:zabbix-migration-mysql-postgresql [2025/01/15 12:18] – rolland | work:zabbix:zabbix-migration-mysql-postgresql [2025/01/15 14:26] (текущий) – rolland | ||
---|---|---|---|
Строка 181: | Строка 181: | ||
</ | </ | ||
+ | ==== Настраиваем MySQL ==== | ||
+ | Для начала поправим файл **/ | ||
+ | |||
+ | < | ||
+ | [mysqld] | ||
+ | ... | ||
+ | default-authentication-plugin=mysql_native_password | ||
+ | </ | ||
+ | |||
+ | Перезапускаем службу MySQL | ||
+ | |||
+ | < | ||
+ | systemctl restart mysql | ||
+ | </ | ||
+ | |||
+ | Меняем метод входа пользователя Zabbix. Не забываем поставить правильный пароль. | ||
+ | |||
+ | < | ||
+ | mysql -e "ALTER USER ' | ||
+ | </ | ||
+ | |||
+ | Далее создаем файл **/ | ||
+ | |||
+ | < | ||
+ | LOAD DATABASE | ||
+ | FROM mysql:// | ||
+ | INTO postgresql:// | ||
+ | WITH include no drop, | ||
+ | truncate, | ||
+ | create no tables, | ||
+ | create no indexes, | ||
+ | no foreign keys, | ||
+ | reset sequences, | ||
+ | data only, | ||
+ | prefetch rows = 1000, | ||
+ | batch rows = 1000, | ||
+ | batch concurrency = 1 | ||
+ | ALTER SCHEMA ' | ||
+ | </ | ||
+ | |||
+ | ==== Миграция ==== | ||
+ | |||
+ | Останавливаем Zabbix и Apache: | ||
+ | |||
+ | < | ||
+ | sudo systemctl stop zabbix-server apache2 | ||
+ | </ | ||
+ | |||
+ | Создаем каталог для данных из MySQL | ||
+ | |||
+ | < | ||
+ | mkdir / | ||
+ | </ | ||
+ | |||
+ | Далее запускаем pgloader с конфигурацией, | ||
+ | |||
+ | < | ||
+ | pgloader --root-dir=/ | ||
+ | </ | ||
+ | |||
+ | Все предупреждающие сообщения игнорируем. Миграция займет некоторое время, в зависимости от размера и т.п. | ||
+ | |||
+ | После завершения, | ||
+ | |||
+ | < | ||
+ | sudo -u postgres psql -c "SET password_encryption=' | ||
+ | </ | ||
+ | |||
+ | Снова задаем пользователя | ||
+ | |||
+ | < | ||
+ | sudo -u postgres psql -c "ALTER ROLE zabbixrd WITH PASSWORD ' | ||
+ | </ | ||
+ | |||
+ | Создаем схемы: | ||
+ | |||
+ | < | ||
+ | sudo -u postgres psql --host=127.0.0.1 --dbname=zabbixrddb --username=zabbixrd -f / | ||
+ | |||
+ | sudo -u postgres psql --host=127.0.0.1 --dbname=zabbixrddb --username=zabbixrd -f / | ||
+ | |||
+ | sudo -u postgres psql --host=127.0.0.1 --dbname=zabbixrddb --username=zabbixrd -f / | ||
+ | </ | ||
+ | |||
+ | Ну и рекомендуется сделать VACUUM | ||
+ | |||
+ | < | ||
+ | sudo -u postgres vacuumdb --dbname=zabbixrddb --analyze --username=postgres --jobs=$(grep -c processor / | ||
+ | </ | ||
+ | |||
+ | ==== Тестирование ==== | ||
+ | |||
+ | Удаляем поддержку mysql | ||
+ | |||
+ | < | ||
+ | sudo apt remove zabbix-server-mysql | ||
+ | </ | ||
+ | |||
+ | На всякий случай сохраняем конфиг **zabbix_server.conf** . | ||
+ | |||
+ | Ставим необходимые пакеты | ||
+ | |||
+ | < | ||
+ | sudo apt install zabbix-server-pgsql php8.3-pgsql zabbix-apache-conf | ||
+ | </ | ||
+ | |||
+ | Удаляем конфиг mysql для Zabbix | ||
+ | |||
+ | < | ||
+ | sudo rm / | ||
+ | </ | ||
+ | |||
+ | Стартуем Zabbix и Apache | ||
+ | |||
+ | < | ||
+ | sudo systemctl start zabbix-server apache2 | ||
+ | </ | ||
+ | |||
+ | Подключаемся к нашему Zabbix через браузер и выполняем его настройку на СУБД PostgreSQL. После этого все должно заработать. | ||
+ | |||
+ | Удаляем MysQL и все, что с ним связано. | ||
+ | |||
+ | < | ||
+ | service mysql stop | ||
+ | |||
+ | sudo apt purge mysql-server mysql-common mysql-server-core-* mysql-client-core-* | ||
+ | |||
+ | sudo rm -Rf / | ||
+ | |||
+ | sudo rm -Rf /etc/mysql/ | ||
+ | |||
+ | sudo rm -Rf / | ||
+ | |||
+ | sudo deluser --remove-home mysql | ||
+ | </ | ||
+ | |||
+ | ==== Установка TimescaleDB ==== | ||
+ | |||
+ | А теперь еще одна плюшка. Ставим TimescaleDB для улучшения работы с Zabbix. | ||
+ | |||
+ | Подключаем репозиторий | ||
+ | |||
+ | < | ||
+ | echo "deb https:// | ||
+ | </ | ||
+ | |||
+ | Про ключ не забываем | ||
+ | |||
+ | < | ||
+ | wget --quiet -O - https:// | ||
+ | </ | ||
+ | |||
+ | Обновим список | ||
+ | |||
+ | < | ||
+ | sudo apt update | ||
+ | </ | ||
+ | |||
+ | Ставим необходимое | ||
+ | |||
+ | < | ||
+ | sudo apt install timescaledb-2-postgresql-17 timescaledb-2-loader-postgresql-17 | ||
+ | </ | ||
+ | |||
+ | Выполняем настройку. Проще всего на все ответить " | ||
+ | |||
+ | < | ||
+ | sudo timescaledb-tune | ||
+ | </ | ||
+ | |||
+ | Останавливаем сервер Zabbix | ||
+ | |||
+ | < | ||
+ | sudo systemctl stop zabbix-server | ||
+ | </ | ||
+ | |||
+ | Перезапустим postgresql | ||
+ | |||
+ | < | ||
+ | sudo systemctl restart postgresql | ||
+ | </ | ||
+ | |||
+ | Подключаем расширение к Zabbix | ||
+ | |||
+ | < | ||
+ | echo " | ||
+ | </ | ||
+ | |||
+ | И выполняем скрипт для конвертации данных. Занимает некоторое время. | ||
+ | |||
+ | < | ||
+ | sudo -u postgres psql --host=127.0.0.1 --dbname=zabbixrddb --username=zabbixrd -f / | ||
+ | </ | ||
+ | |||
+ | Запускаем Zabbix | ||
+ | |||
+ | < | ||
+ | sudo systemctl start zabbix-server | ||
+ | </ | ||
+ | |||
+ | Помогли в написании источники: |