Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ MySQL _ migracja bazy danych

Napisany przez: mihmih 16.01.2020, 09:42:25

Witam,

chciałbym zrobić migrację bazy danych MySql na nowy serwer. Z bazą w tej chwili jest połączone kilka prymitywnych aplikacji na innych komputerach poprzez darmowy program LibreOffice Base. W bazie jest około 300 tabel, około pół miliona rekordów w sumie, zaś w Base są formularze i zapisane kwerendy, które są wykorzystywane jako źródła danych w formularzach. Z racji tego, że jeszcze nigdy tego nie robiłem chciałbym spytać o parę rzeczy:

1. Czy jest się czego obawiać? smile.gif Zwrócić na coś szczególną uwagę?
2. Czy jeśli na starym serwerze mam wersję 5.6, to mogę na nowym serwerze zainstalować np. 7.X? Lub MySql 8?
3. Czy nowa wersja MySql może mieć jakiś negatywny wpływ na te kwerendy zapisane lokalnie w LibreOffice?
4. Aplikacja korzysta również z wielu makr napisanych w Basicu w tym LibreOffice, czy będą one działać dalej jeśli uaktualnię wersję MySql?

Napisany przez: nospor 16.01.2020, 10:04:03

ad3) Moze miec wplyw. Najnowsze wersje mysql sa bardziej nastawione na standard SQL i typowe skroty ze starego mysql moga nie dzialac, np zapytania z group by, ktore pobeiraja dane w select z pol, ktore nie byly grupowane

Napisany przez: trueblue 16.01.2020, 10:16:07

Cytat(nospor @ 16.01.2020, 10:04:03 ) *
Najnowsze wersje mysql sa bardziej nastawione na standard SQL i typowe skroty ze starego mysql moga nie dzialac, np zapytania z group by, ktore pobeiraja dane w select z pol, ktore nie byly grupowane

A to nie jest kwestia włączenia/wyłączenia wartości ONLY_FULL_GROUP_BY dla zmiennej sql_mode?

Napisany przez: nospor 16.01.2020, 10:27:53

Zapewne tak. Sygnalizuje jednak, ze zmiana na najnowsza wersje da pare problemow - takie bylo przeciez pytanie w pkt3 smile.gif

Napisany przez: mihmih 16.01.2020, 10:41:41

Dziękuje bardzo za podpowiedzi. Ktoś może się wypowie na pozostałe punkty?

I czy reklamowana na stronie wersja 8 MySql rzeczywiście przyspieszy działanie bazy dwukrotnie?smile.gif

Napisany przez: Pyton_000 16.01.2020, 13:48:53

Mysql za 80% zrobi Ci kuku. Bezpiecznie jest przejść na 5.7 z wyłączonym Strict dla zachowania kompatybilności.

Co do kompatybilności Libre -> mysql trudno mi się wypowiedzieć. Zależy jak bardzo Chcesz kombinować i jak bardzo ważna jest ta apka w Libre.

Możesz sobie zrobić dump bazy jako kopia i postawić nową wersję np. MySQL 8 i zaimportować (wpierw może gdzies loklanie) i sprawdzić czy działa.

Możesz też postawić ProxySQL i przepiścić przez niego ruch do Mysql wtedy możesz postawić sobie obok MySQL i użyć mirroringu zapytać i pchać je do 8. Będziesz widział czy coś się wywala.

Rozwiązań jest wiele, wszsytko zależy od tego jak krytyczną infrastrukturę masz i jak bardzo chcesz się bawić.

Napisany przez: mihmih 14.04.2020, 21:21:22

Dzięki za podpowiedzi... A więc zainstalowałem na nowym serwerze MySql 8, dostałem kopię bazy danych ze starego serwera i mogę sobie porobić testy i sprawdzić co się stanie smile.gif

Nigdy nie robiłem takiej migracji...kopię bazy danych dostałem w formie kilkuset plików, są to rozszerzenia frm, ibd, trg, trn, każdego po kilkadziesiąt i jeden plik opt. Aby wykonać import powinien w workbenchu wejść w database-> migration wizard i tam się to robi? Czy w innym miejscu?

Migracja jako tako się udała smile.gif wszystkie formularze, raporty, kwerendy działają, dane się skopiowały, jedynie musiałem zmienić w libreoffice connector javy z 5.x na 8.x

Oto na jakie problemy napotkałem:

- przy eksporcie z mysql5.7 do mysql8 nie chciały się zaimportować triggery. Musiałem je półautomatycznie wywołać w nowej bazie
- w nowej bazie triggery mam ustawione do zapisywania kiedy wiersz był dodany do tabeli i kiedy został ostatnio zmieniony. Tu jest taki dziwny błąd że teraz jak coś zmieniam to data zmiany raz mi wyskakuje jako czas letni, a raz jako czas zimowy. To znaczy przy niektórych tabelach data zmiany jest o godzinę wcześniejsza. Triggery do każdej tabeli były generowane tak samo...

I największy błąd który martwi mnie najbardziej

- dane do bazy są wprowadzane przez Libreoffice Base, taki ubogi access. Połączony jest on z bazą mysql przez connector java 8.0.11. Niezależnie czy dane są wprowadzane przez formularz, przez tabele czy przez kwerende - jeżeli dodaje/zmieniam jakąkolwiek datę do bazy, to do MySqla zapisuje się data o jeden dzień wcześniejsza. Jeżeli robię insert bądź update z poziomu workbencha, to wszystko z datami jest ok. Niby w internecie są podobne problemy, ale i tak nie wiem jak do tego podejść, podejrzewam że właśnie z tym connectorem może być coś nie tak, a może należy coś ustawić w workbenchu albo pliku ini?

Z góry dzięki za wszelką pomoc.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)