Migrujte z Postgresu na MySQL

Úvod

Pro potřeby serverových administrátorů Easy Projectu jsme otestovali několik nástrojů pro migraci databáze z Postgresu na MySQL.

Jedním z nich je bezplatný open-source, který je ale bohužel starší a má také jednu značnou nevýhodu. Ostatní jsou prémiové nástroje dosahující výsledků, které podle našeho názoru stojí za nákup.

Bezplatný nástroj – php skript pg2mysql

Odmítnutí odpovědnosti: Tento nástroj byl vyvinut třetí stranou => nejde o produkt Easy Software, a proto za něj NERUČÍME.
Testovaný nástroj je k dispozici na:
http://www.lightbox.ca/pg2mysql.php
Provedli jsme vlastní úpravy tohoto nástroje, aby fungoval s php 7.4. Používání je však stále na vlastní riziko a neposkytujeme ŽÁDNÉ ZÁRUKY.

Kroky k migraci

1. Stáhněte si skript a rozbalte archiv.

wget http://www.lightbox.ca/pg2mysql/pg2mysql-1.9.tar.bz2 (obsahuje originální skript od autora)
wget https://www.easyredmine.com/ER/media/knowledge-base/pg2mysql-1.9.zip (obsahuje náš upravený skript pro php verze 7.4)

tar -xvf pg2mysql-1.9.tar.bz2(v případě původního skriptu od autora)
unzip pg2mysql-1.9.zip (v případě našeho upraveného skriptu pro php verzi 7.4)

2. Nainstalujte php

sudo apt install php7.4-cli (v případě našeho upraveného skriptu)

3. Vytvořte výpis databáze PostgreSQL ve formátu .sql, ujistěte se, že používáte "--format p --inserts"

sudo -u postgres pg_dump --format p --inserts JMÉNO_DATABÁZE > /path/to/file.sql

4. Přepněte do složky pg2mysql-1.9

cd pg2mysql-1.9/

5. Spusťte

php pg2mysql_cli.php /path/to/pd/dump/file.sql /path/where/to/save/mysql/file.sql

Uvidíte některé řádky čítající:

"Completed!     30820 lines        5539 sql chunks

Notes:
 - No its not perfect
 - Yes it discards ALL stored procedures
 - Yes it discards ALL queries except for CREATE TABLE and INSERT INTO 
 - Yes you can email us suggestsions: info[AT]lightbox.org
    - In emails, please include the Postgres code, and the expected MySQL code
 - If you're having problems creating your postgres dump, make sure you use "--format p --inserts"
 - Default output engine if not specified is MyISAM"

6. Nyní bude vytvořen soubor s upraveným výpisem databáze sql. Důrazně doporučujeme projít jej a nahradit všude MyISAM za InnoDB.

7. Nyní můžete obnovit tento výpis do čisté databáze MySQL.

8. Protože (jak nás autor upozornil) skript neukládá indexy, musíte je přidat ručně do každé tabulky (bude fungovat i bez indexů, ale mohou nastat vážné problémy s výkonem). Je zde rovněž k dispozici seznam všech indexů, které by měly existovat v tabulkách MySQL generovaných aplikací Easy Project. Musíte je přidat ručně nebo pomocí vlastního skriptu.

Na webu jsou k dispozici další bezplatné nástroje. Výsledky našich testů však nebyly uspokojivé.

Prémiový nástroj - DB Convert for MySQL & PostgreSQL v. 4.3.5

Testovali jsme celkem 3 prémiové nástroje. DBConvert se nám jevil jako nejvhodnější, proto popisujeme jeho podrobné kroky.

Příprava:

1. Ujistěte se, že databáze MySQL i PostgreSQL jsou přístupné zvenčí (můžete to dočasně povolit).

2. Ujistěte se, že se můžete přihlásit do obou databází pomocí uživatelského jména a hesla.

3. Nainstalujte nástroj z - https://dbconvert.com/postgresql/mysql/

Spusťte konverzi:

1. Spusťte průvodce.

2. Vyberte zdrojovou databázi:
PostgreSQL
Název hostitele: IP nebo název domény serveru, na kterém je nainstalována databáze Postgres.
Port: pokud se liší od výchozího
Uživatelské jméno: uživatelské jméno, se kterým se chystáte konvertovat databázi
Heslo: heslo pro výše uvedené uživatelské jméno.

Klikněte na tlačítko "Testovat připojení". Aplikace zkontroluje, zda je možné se připojit ke zdrojovému databázovému serveru se zvoleným uživatelem a heslem. Pokud je to možné, nahraje se seznam databází – vyberte si tu správnou.

3. Klikněte na „Další“. Aplikace se připojí k Postgresu a obdrží seznam tabulek dostupných v databázi. Můžete si vybrat všechny, které mají být konvertovány, nebo pouze jednu/několik z nich.

4. Chvíli počkejte a budete přesměrováni na další krok – nastavení připojení MySQL.
Název hostitele: IP nebo název domény serveru, na kterém je nainstalována databáze MySQL.
Port: pokud se liší od výchozího
Uživatelské jméno: uživatelské jméno, se kterým se chystáte konvertovat databázi
Heslo: heslo pro výše uvedené uživatelské jméno.

Klikněte na tlačítko "Testovat připojení". Aplikace zkontroluje, zda je možné se připojit ke zdrojovému databázovému serveru se zvoleným uživatelem a heslem. Pokud je to možné, nahraje se seznam databází – vyberte si tu správnou.

5. V dalším kroku aplikace zkontroluje zdrojovou databázi a poskytne vám několik doporučení, jak vyřešit možné problémy.

Setkali jsme se s následujícím problémem:

Tabulka „změny“ pole „akce“. V původní databázi byla typu „CHAR (1)“. Ale její výchozí hodnota byla '', takže Mysql předpokládal, že není platná. Můžete zvolit Nový typ. Vybrali jsme CHAR (2) a klikli na tlačítko "Další". Problém byl vyřešen.

Opakujte podobné akce s jakýmikoli dalšími problémovými poli.

6. Ještě jednou klikněte na Další. Aplikace zahájí konverzi zobrazující celkový a aktuální postup. Počkejte, než bude konverze provedena.

7. Klikněte na „Konec“. Konverze je hotová.

Autor tohoto nástroje poskytuje podporu platícím zákazníkům.

Cena: 149 $ (jednorázově)

Další prémiové nástroje

Testovali jsme také zkušební verze těchto nástrojů. Zde jsou obecné komentáře o nich:

  • pgs2scld (https://www.convert-in.com/pgs2sql.htm)
    Žádné problémy s připojením k databázi (není třeba instalovat další ovladače nebo je nějak nastavovat nebo cokoli jiného). Má zkušební verzi (ve zkušebním režimu kopíruje pouze 50 záznamů na tabulku, ale kontroluje všechny řádky a ukazuje tentýž postup, jako kdyby byla zkopírována celá databáze). Má interní debugger a ukazuje možné problémy s migrací. Má mnoho různých možností, které lze použít během migrace. Má 24/7 podporu pro placené klienty. Pouze uživatelské rozhraní, pouze Windows.
    Cena 49 $ (jednorázově).
  • ESF Database Migration Toolkit (https://www.dbsofts.com/articles/postgresql_to_mysql/)
    Žádné problémy s připojením k databázi (není třeba instalovat další ovladače nebo je nějak nastavovat nebo cokoli jiného). Má zkušební verzi (ve zkušebním režimu kopíruje pouze 50 000 záznamů). Má interní debugger a ukazuje možné problémy s migrací. Má mnoho různých možností, které lze použít během migrace. Má 24/7 podporu pro placené klienty. Pouze uživatelské rozhraní, pouze Windows.
    Cena 322 $ (jednorázově).

Vyzkoušejte Easy Project na 30 dní zdarma

Všechny funkce, SSL ochrana, denní zálohy. Vyzkoušejte bez rizika ještě dnes.