Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| work:zabbix:zabbix-migration-mysql-postgresql [2025/01/15 11:52] – rolland | work:zabbix:zabbix-migration-mysql-postgresql [2025/01/15 14:26] (текущий) – rolland | ||
|---|---|---|---|
| Строка 143: | Строка 143: | ||
| </ | </ | ||
| + | И еще ALTER | ||
| + | |||
| + | < | ||
| + | grep 'ALTER TABLE ONLY' schema.sql > / | ||
| + | </ | ||
| + | |||
| + | ==== Настраиваем PostgreSQL ==== | ||
| + | |||
| + | Создаем пользователя базы Zabbix. Я создавал с таким же именем и паролем, | ||
| + | |||
| + | < | ||
| + | sudo -u postgres createuser --pwprompt zabbixrd | ||
| + | </ | ||
| + | |||
| + | Далее создаем базу. Тоже с названием не заморачивался и брал такое же, как в MySQL. | ||
| + | |||
| + | < | ||
| + | sudo -u postgres createdb -O zabbixrd zabbixrddb | ||
| + | </ | ||
| + | |||
| + | Применяем схему | ||
| + | |||
| + | < | ||
| + | sudo -u postgres psql --host=127.0.0.1 --dbname=zabbixrddb --username=zabbixrd -f / | ||
| + | </ | ||
| + | |||
| + | Для работы с **pgloader** временно ставим шифрование md5 | ||
| + | |||
| + | < | ||
| + | sudo -u postgres psql -c "SET password_encryption=' | ||
| + | </ | ||
| + | |||
| + | Задаем пароль пользователя введенный выше | ||
| + | |||
| + | < | ||
| + | sudo -u postgres psql -c "ALTER ROLE zabbixrd WITH PASSWORD ' | ||
| + | </ | ||
| + | |||
| + | ==== Настраиваем 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 | ||
| + | </ | ||
| + | |||
| + | Помогли в написании источники: | ||