Ad Widget

Collapse

Миграция с MySQL на PostgreSQL

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Kiba
    Junior Member
    • May 2015
    • 6

    #1

    Миграция с MySQL на PostgreSQL

    Добрый день.

    В связи с политически-техническим решением возникла необходимость мигрировать БД нашего Zabbix 3.0 с MySQL 5.7 на PostgreSQL 9.5.
    Изначально задача виделась очень простой:
    1. Создал схему в postgres использовав скрипты SQL поставляемые в дистрибутиве Zabbix 3.0.
    2. Выгрузил данные с помощью mysqldump (только "insert") в формате понятном postgres.
    3. Попытался загрузить в БД postgres. И вот тут вылезли проблемы - postgres начал ругаться, что не уникальные значения в индексах, Ключ (eventid)=(71) отсутствует в таблице "events", и т.п.
    Не могу понять, для разных СУБД используются разные схемы данных? И как те же самые данные находятся в MySQL и не конфликтуют?

    Может есть рекомендации как перенести данные из MySQL в PostgreSQL?

    Буду очень благодарен за помощь.

    Евгений.
  • welch
    Junior Member
    • Aug 2017
    • 1

    #2
    Миграция с MySQL на PostgreSQL

    Евгений привет!

    CentOS Linux release 7.3.1611 (Core)
    PostgreSQL 9.6.4
    zabbix-server 3.2
    pgloader version "3.4.1"

    Пробую мигрировать утилитой pgloader
    Синтаксис следующий:
    Code:
    pgloader mysql://mysql_user:mysql_password@mysql_server:3306/database_zabbix postgresql:///zabbix
    В /etc/zabbix/zabbix_server.conf прописываем коннект:
    Code:
    DBHost=new_postgresql_database
    DBName=zabbix_database
    DBUser=zabbix_user
    DBPassword=<password_password>
    Далее запускаем службу:
    Code:
    systemctl start zabbix-server
    И в логах Zabbix сервера видим следующее:
    Code:
    Cannot upgrade database: the database must correspond to version 2.0 or later. Exiting ...

    Comment

    • khodus
      Junior Member
      • Jun 2015
      • 14

      #3
      Я переносил данные с mysql 5.7 в postgres 9.4, к сожалению, точных инструкций не осталось.
      Заняло это довольно много времени из-за постоянно вылезающих проблем.
      В итоге дамп разбил на отдельные таблицы, чтобы проще было найти проблемные. Как только выскакивали ошибки, лез в дамп таблицы которая не загрузилась и правил.
      Обычный дамп с mysql очень тяжело подпихнуть, поэтому так же посоветую pgloader, а дальше гуглить, очень много гайдов на эту тему.

      Comment

      • and_luk
        Junior Member
        • Jan 2019
        • 2

        #4
        Вопрос остается актуальным, как правильно мигрировать?

        Comment

        • oscar
          Senior Member
          • Dec 2010
          • 141

          #5
          ИМХО, только логически через импорт/экспорт. Когда-то давно я так и мигрировал, но если бы задачу поставили сейчас, то делал бы через API...

          Comment

          • Kos
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • Aug 2015
            • 3404

            #6
            Через API нельзя манипулировать историей и трендами (в смысле, изменять/добавлять).

            Comment

            • rwx
              Junior Member
              • Nov 2018
              • 7

              #7
              Собираемся мигрировать с mariadb 10.1 на PostgreSQL 11.3. Тестовый переезд уже проведен, все переехало нормально.
              План переезда такой:
              1. Берется файл структуры БД для PostgreSQL и разделяется на три части(в разные файлы): в первой остается создание таблиц, во второй создание всех индексов в третей все alter table.
              Все данные, что инсертятся в БД в create.sql.gz удаляются.
              2. В пустую БД PostgreSQL заливается дамп, который создает таблицы.
              3. Далее устанавливается pgloader (у нас это версия pgloader_3.3.2, с другой почему то не сработало) и с помощью него переливается БД без history и trends таблиц(т.к. простой нужен минимальный).
              4. Далее заливаются команды из файлов создания индексов и после - alter table.
              5. Потом запускаем zabbix сервер(в нашем случае проходит обновление БД до последней версии).
              6. С помощью pgloader переливаются таблицы history и trends. При этом, trends пришлось забэкапить с помощью mysqldump, развернуть дамп в отдельную БД и только потом заливать в PostgreSQL, т.к. из боевой БД эти таблицы не заливались(какие ошибки были уже не помню,тестирование переезда было около 2 месяцев назад...).
              7. Профит.
              Last edited by rwx; 29-04-2019, 11:14.

              Comment

              Working...