Как преобразовать PostgreSQL в MySQL 3 способами
2023-01-11 | Yulia Qin
PostgreSQL и MySQL - это бесплатные СУБД с открытым кодом (системы управления реляционными базами данных), любимые пользователями по всему миру. Они соответствуют стандарту ACID, поддерживают кластеризацию и NFT (network fault tolerance). Обе они имеют активную поддержку сообщества.
Несмотря на большое количество сходств, PostgreSQL и MySQL отличаются друг от друга по ряду параметров. PostgreSQL хорошо справляется со сложными запросами, а MySQL хорошо работает в системах OLAP и OLTP. PostgreSQL полностью совместим с ACID и SQL, а MySQL - частично. PostgreSQL имеет более сложную кривую обучаемости, чем MySQL.
Поэтому MySQL обычно используется для проектов на основе веба, которые требуют базы данных для простых операций с данными, а PostgreSQL широко применяется в сложных системах, где важна скорость чтения и записи.
Некоторые пользователи PostgreSQL, может быть, будут отказываться от PostgreSQL и выбирать MySQL за его простые операции, меньшие расходы или некоторые функции, такие как репликация master-slave и кэш запросов. В этом блоге будут показаны 3 метода миграции с PostgreSQL на MySQL, и надеемся, что они помогут вам в этом процессе.
Способ 1: Преобразование PostgreSQL в MySQL с помощью MySQL Workbench
Требования:
- Работающий экземпляр PostgreSQL с надлежащим доступом к MySQL.
- Работающий сервер MySQL с привилегиями доступа пользователя.
- Поддерживаемые версии: PostgreSQL 8.0 и новее, MySQL 5.0 и выше, а также MySQL Workbench 5.2.44 или более поздние версии.
1. Скачайте, скомпилируйте (Linux и Mac), установите и зарегистрируйте 32/64-битный драйвер psqlODBC.
Windows: скачайте, распакуйте и установите пакет MSI.
Linux: установите iODBC и запустите команду для Debian, Ubuntu или другой дистрибуции на базе Debian.
$> sudo apt-get install iodbc libiodbc2-dev libpq-dev libssl-dev
Для дистрибуций на базе RPM (таких как RedHat и Fedora):
$> sudo yum install iodbc iodbc-dev libpqxx-devel openssl-devel
Скачайте psqlODBC, распакуйте его в каталог на жестком диске, откройте терминал и перейдите в каталог. Запустите в терминале следующие команды.
$> ./configure --with-iodbc --enable-pthreads
$> make
$> sudo make install
Mac OS X: получите Xcode из AppStore и установите инструмент (Preferences> Downloads).
Скачайте psqlODBC, распакуйте его в каталог на жестком диске, откройте терминал и перейдите в каталог. Запустите в терминале следующие команды.
$> ./configure --with-iodbc --enable-pthreads
$> CFLAGS="-arch i386 -arch x86_64" make
$> sudo make install
2. В MySQL Workbench перейдите в БД > Миграция БД..., чтобы запустить визард.
3. На странице Обзор нажмите Начать Миграцию, чтобы открыть страницу Выбор Источник, выберите PostgreSQL из комбинированного списка, и Метод Подключения как ODBC (параметры вводятся вручную), затем укажите детали подключения здесь (Driver name=ODBC driver name из предыдущего шага). Установите флажок Сохранить подключение для использования в будущем (введите имя), чтобы сохранить его.
Протестируйте подключение и нажмите кнопку Далее.
4. На странице Выбор Цели введите информацию о подключении для MySQL, протестируйте подключение, затем нажмите Далее.
5. Подождите экземпляра ддя получения списка схем, и нажмите Далее.
6. Выберите схему для миграции, выберите метод маппинга имен и нажмите Далее.
7. Подождите обратной разработки выбранной схемы и нажмите Далее.
8. На странице Исходные объекты нажмите кнопку Показать выбор, чтобы получить доступные объекты, и выберите элементы, которые необходимо мигрировать.
9. После преобразования объектов нажмите Далее, чтобы двигаться дальше.
10. На странице Ручное редактирование используйте Вид, чтобы изменить способ отображения мигрированных объектов, и фиксируйте мапиннг типов колонок с помощью Мапиннгов Колонок из выпадающего списка.
Выберите Показать Код и Сообщения, чтобы увидеть и отредактировать сгенерированный код MySQL. Дважды щелкните строку базы данных, чтобы переименовать целевой объект. Нажмите кнопку Далее.
11. На странице Параметры создания целевого объекта выберите Создать схему в целевой СУБД. Нажмите кнопку Далее.
Посмотрите ход выполнения миграции PostgreSQL на странице Создать схему и проверьте результаты на странице Результаты созданного целевого. Нажмите кнопку Далее.
12. Настройте миграцию на странице Параметры Передачи Данных, оставьте параметры по умолчанию и нажмите Далее.
13. Будет представлен отчет о миграции, нажмите Все Выполнено и закройте его.
14. Проверьте данные. Откройте редактор SQL, подключенный к MySQL, и введите команду:
SELECT * FROM databasename.
Способ 2: Преобразовать PostgreSQL в MySQL с помощью pg2mysql
1. Скачайте pg2mysql и распакуйте архив.
2. Установите PHP.
sudo apt install phpx.x-cli
3. Создайте дамп базы данных PostgreSQL (.sql).
sudo -u postgres pg_dump --format p --inserts DBNAME > /path/to/file.sql
4. Преобразуйте в папку pg2mysql-x.x
cd pg2mysql- x.x/
5. Выполните команды.
php pg2mysql_cli.php /path/to/pd/dump/file.sql /mysql/location/path/file.sql
6. Прочитайте измененный sql-дамп и замените MyISAM на InnoDB.
7. Восстановите дамп в пустую базу данных MySQL.
8. Добавьте индексы вручную в каждую таблицу.
Способ 3: Экспортируйте PostgreSQL в файл CSV и импортируйте его в MySQL
1. Извлеките определение таблицы PostgreSQL с помощью pg_dump.
-bash-4.2$ <strong>pg_dump -st table schema</strong>
--
-- PostgreSQL database dump
--
-- Dumped from database version xx
-- Dumped by pg_dump version xx
2. Перепишите стейтмент вручную для работы в MySQL.
CREATE TABLE name (
actor_id integer auto_increment NOT NULL primary key,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp DEFAULT now() NOT NULL
);
3. Добавьте вторичные индексы к экземпляру MySQL с переписанным стейтментом.
Сделайте это для всех таблиц в целевой схеме.
schemea-# dt
List of relations
Schema | Name | Type | Owner
4. Экспортируйте данные PostgreSQL в файл CSV.
schema=# copy table to 'location.csv' delimiter ',' CSV HEADER;
COPY xx
5. Импортируйте данные в MySQL.
mysql-js> util.importTable("/file/path/.csv", {schema: "dbname", table: "name", dialect: "csv-unix", skipRows: 1, showProgress: true}
Параллельный импорт.
mysqlsh mysql://root:@xxxxx --ssl-mode=DISABLED -- util import-table /r/xx.dump --schema=xx --table=xx --bytes-per-chunk=xx --linesTerminatedBy=$' '
Создать резервное копирование базы данных заранее
Резервное копирование базы данных - это надежная защита от потери данных. Независимо от того, что стало причиной повреждения или сбоя данных в процессе миграции с PostgreSQL на MySQL, резервное копирование данных поможет вам быстро восстановить работу.
Vinchin Backup & Recovery автоматизирует резервное копирование баз данных для Oracle DB, MySQL, SQL Server, PostgreSQL и т.д., а также минимизирует восстановление до исходной или новой целевой базы данных за 4 шага.
С помощью этого решения для резервного копирования вы можете централизованно управлять резервным копированием и задачами для нескольких баз данных через единую консоль.
Вы можете простым щелчком мыши выбирать стратегии полного, дифференциального, инкрементного и журнального резервного копирования, которые зависят от базы данных.
Вы также можете сократить размер данных как минимум на 50% с помощью дедупликации и сжатия данных для экономии храненилища и затрат.
Самое главное, что это решение доступно с экономической ценой для предприятий любого размера.
Испытайте все перечисленные функции и другие сюрпризы с помощью 60-дневной бесплатной пробной версии для Предприятий.
Обобщение
PostgreSQL и MySQL - очень популярные и мощные базы данных. Некоторые компании, может быть, хотят мигрировать с PostgreSQL на MySQL (см. миграция с MySQL на PostgreSQL) для различных целей, например, для удобства пользователей или отдельных функций. В этом блоге для вашего сведения описаны 3 метода миграции.
Но перед этим стоит сделать резервное копирование базы данных, чтобы предотвратить повреждение данных. Vinchin Backup & Recovery обеспечивает резервное копирование и восстановление баз данных за 4 шага и защищает их от вредоносных программ с помощью IO-монитора, который отклоняет любые попытки несанкционированного посещения.
поделиться: