guvijur
@guvijur
Практик, кинестетик, ретроград и консерватор

Как перенести базу данных из СУБД Postgresql в MySQL?

Добрый день!
Есть сервер Debian 11, ка котором установлен сервис видеоконференций TrueConf.
TrueConf Использует БД postgresql и в мануале есть ина, как сделать из неё экспорт:
654489bc6d894234233780.png

На другом сервере есть старенький CentOS 6.10, на котором сидят легаси сервисы, в частности корпоративный WEB-портал управления задачами, контактами и прочими инструментами внутрикорпоративного взаимодействия. В качестве СУБД там используется MySQL 5.1.
Поставлена задача внедрить на этот портал статистику по конференциям, производимым в TrueConf.

Я не имел удовольствия работать с Postgresql и, если честно, то не очень хочу, меня вполне устраивает MySQL.
Я пытался найти инструмент конвертации из pg_sql в mysql, даже нашёл - pg2mysq-1.9, но полученный SQL-файл содержит не совместимые с моей версией mysql данные. Бог с ним, взял bash и написал скрипт, который парсит полученный файл и исправляет всё под мою версию... Но оказалось, что конвертированный из dump-файла postrgesql-я не содержит данных, только таблицы, хотя процесс конвертации ошибок не выдал. Значит что-то не то.

Сталкивался ли кто-нибудь с задачей перенести БД из PostgrSQL в MySQL? С помощью чего сделали?

Из очевидного - написать скриптяру, которая будет коннектится к PG, получать список таблиц, экспортировать это всё и тут же записывать в MySQL. Но повторю, с PG не работал и не знаю всех подводных камней, а времени ограничено. Уверен, что есть в сети ещё 100% рабочие решения.

P.S. Если докручу вариант с pg2mysq, то напишу его в комментарии или в тексте вопроса.
  • Вопрос задан
  • 455 просмотров
Пригласить эксперта
Ответы на вопрос 4
mikes
@mikes
может таки начать с https://developers.trueconf.com/api/server/ и перестать дергать таблицы с бд?
Ответ написан
Комментировать
trapwalker
@trapwalker
Программист, энтузиаст
Представляете, если бы врачи с таким же уровнем понимания что делают делали трансплантацию органов? Нафаршировал пациента мелко порублеными топором органами донора и ждём выздоровления=).

Ваш сервис видеоконференций наверно постоянно работает с БД, это значит, что для интеграции вам нужно постоянно делать экспорты. Странное решение дампить и переносить БД целиком. Типа если у вас молоток, то вокруг всё похоже на гвозди?

Такие вещи обычно делаются в виде микросервисов. На худой конец можно сделать простенького демона, который будет ходить в БД конференций и селектить оттуда только нужные данные, и тут же вставлять в вашу другую базу в нужном формате. Не нужно ничего дампить и ковертировать, хотя наверняка и стандартными командлайнами с небольшой конвертацией SQL-кода регулярками можно добиться аналогичного результата. Но в учтите, это нагромождение непрофильных костылей будет невозможно поддерживать. Прдётся каждый раз сучить рукава и нырять в это говно, чтобы понять почему валится процесс не доходя до конца, или почему незаметно не доходят какие-то записи...

Если сделать отдельный скрипт синхронизации\. то его можно хорошо про комментировать, задокументировать, обложить тестами и проверками, снабдить внятными и понятными сообщениями об ошибках. Нагромождение пайпов с конвертерами, регекспами и пакетными файлами сделать удобным и стабильным гораздо сложнее.

Используйте профильные инструменты по назначению и не бойтесь осваивать новые. Такой вот совет.
А если ближе к вашим попыткам, то смотрите глазами, SQL вполне читаемый, можно по шагам посмотреть что не так. Есть в экспортированном SQL данные? Что это за данные? Куда они вставляются? Есть они там, куда вставляются? Просто проследите поэтапнро.

Вот про это я и говорил, когда объяснял, что костыльное решение очень трудно дебажить и поддерживать. У вас что-то идёт не так, но вместо того. чтобы разобраться пошагово, вы приходите и заставляете нас тут гадать на кофейной гуще без малейшей информации по теме.
Ответ написан
@rPman
Если ты программист, то написать программу в 10 строчек, копирующую содержимое заданной таблицы из одной базы в другую для тебя не должно быть проблемой. Как минимум на php с использованием PDO проблем не возникнет.

Судя по тому что структуру таблиц ты уже перенес, заморачиваться с этим тебе не понадобится.

p.s. экспортировать и импортировать данные в своем формате умеют некоторые универсальные GUI для баз данных, например та же WorkBench, там тоже можно сделать экспорт отдельно в виде insert-ов и отдельно структуру.

p.p.s. ну перенесли вы данные, но данные это самое легкое, запросы тоже переносить нужно, а вот тут совместимость может быть слабая.
Ответ написан
Комментировать
iMedved2009
@iMedved2009
Не люблю людей
Ну если не хочется особенно парится:
Немножко о Postgres fdw в связке с MySQL
Подключаете к PostgreSQL MySQL а дальше insert select по крону, или тригерам заносите это в mysql и будут у вас в mysql постоянно свежие данные и писать кроме sql запросов ни черта не придется
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы