Migracja z MySQL 5.7 do PostgreSQL – ktoś to robił na produkcji?

426 wyświetleń 3 odpowiedzi
K
Klaudia Michalak (0 pkt)
Mamy bazę ~40GB, aplikacja w PHP/Laravel, deadline za 6 tygodni bo AWS kończy wsparcie dla naszej instancji RDS MySQL 5.7. Próbowałem pgloader ale wywala się na kilku tabelach z JSONem. Czy ktoś przechodził przez to i ma jakiś sprawdzony flow? Najbardziej boję się o stored procedures, mamy ich z 30.
P
porownuje_45 (0 pkt)
Przechodziłem przez podobną migrację rok temu, ~60GB, też Laravel. pgloader faktycznie sypie się na JSON gdy masz pola z wartością NULL albo invalid JSON – odpal najpierw `SELECT * FROM tabela WHERE JSON_VALID(kolumna) = 0` i wyczyść śmieci przed migracją. Stored procedures to największy ból: MySQL i PostgreSQL mają inną składnię dla zmiennych, pętli i obsługi wyjątków, te 30 procedur musisz przepisać ręcznie, nie ma narzędzia które to zrobi sensownie. Daj sobie przynajmniej tydzień tylko na testy procedur na środowisku stagingowym z kopią produkcyjnych danych.
J
jednoosobowa_38 (0 pkt)
Pytanie do Ciebie – te stored procedures są wywoływane bezpośrednio z aplikacji PHP czy tylko wewnętrznie między sobą? Bo jeśli Laravel używa ich przez `DB::statement`, to masz jeszcze problem z różnicami w obsłudze OUT parametrów między MySQL a PostgreSQL, to nie jest transparentna zamiana.
E
elzbieta.mazur (0 pkt)
Szczerze, przy 6 tygodniach i 30 stored procedures rozważyłbym inaczej: upgrade do MySQL 8.0 na RDS zamiast migracji do Postgresa – AWS wspiera 8.0 i możesz to zrobić w parę godzin snapshota bez przepisywania ani jednej linii kodu. Migracja między silnikami to projekt na 3-4 miesiące jeśli chcesz to zrobić porządnie, a nie na 6 tygodni pod presją deadline'u.