Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: migracja bazy danych
Forum PHP.pl > Forum > Bazy danych > MySQL
mihmih
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?
nospor
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
trueblue
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?
nospor
Zapewne tak. Sygnalizuje jednak, ze zmiana na najnowsza wersje da pare problemow - takie bylo przeciez pytanie w pkt3 smile.gif
mihmih
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
Pyton_000
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ć.
mihmih
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.