Migracja z MySQL 5.7 do PostgreSQL – ktoś to robił na produkcji?
426 wyświetleń
3 odpowiedzi
K
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
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
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
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.
Zaloguj się, aby brać udział w dyskusji.