Jeśli chcesz udostępnić bazę danych kilku innym użytkownikom, umieszczenie katalogu danych w OneDrive nie zadziała.
MySQL przechowuje dane w plikach w katalogu datadir, to prawda. Są one przechowywane w plikach o nazwie obszary tabel które mają .ibd
rozszerzenie.
Ale gdy wykonujesz operacje INSERT/UPDATE/DELETE, dane są tymczasowo przechowywane w pamięci i w dziennikach transakcji (ib_logfile*
. MySQL musi przeprowadzić delikatną koordynację między nimi, aby zachować dane w trwały sposób, zapewniając jednocześnie dobrą wydajność. Działa dobrze, ale tylko wtedy, gdy MySQL Server jest jedynym procesem zapisującym do plików.
OneDrive w ogóle nie współpracuje z MySQL. Okresowo sprawdza pliki, które uległy zmianie od czasu ostatniej synchronizacji. Częstotliwość sprawdzania plików przez OneDrive wynosi około 10 minut i nie można tego skonfigurować.
OneDrive może zdecydować się na synchronizację plików chwilę po wykonaniu niektórych operacji WSTAW/AKTUALIZUJ/USUŃ, a dane są modyfikowane w pamięci RAM, ale nie zostały jeszcze zaktualizowane w plikach obszaru tabel na dysku.
Po zatwierdzeniu zmiany należy ją również bezpiecznie przechowywać w dzienniku transakcji, nawet jeśli nie jest aktualizowana w obszarze tabel. Ale jeśli Twoi znajomi otrzymają pliki w tym stanie (dziennik transakcji zawiera zmiany, których nie ma w przestrzeni tabel), mogą zrekonstruować dane z pamięci RAM, których nie otrzymali. Nazywa się to odzyskiwaniem po awarii InnoDB . MySQL Server robi to automatycznie, jeśli uruchamia się i stwierdza, że dziennik transakcji zawiera zmiany, których nie ma w przestrzeni tabel. Zakłada, że nastąpiło nagłe ponowne uruchomienie i utraciłeś zawartość pamięci RAM.
Jeśli Twoi znajomi spróbują po prostu utrzymać nieprzerwane działanie swojego serwera MySQL, czytając katalog danych, który jest jednocześnie aktualizowany przez ich jeden dysk OneDrive, w zasadzie nadpisze to ich pliki, a MySQL będzie zdezorientowany. Sprawdza tylko, czy powinien wykonać odzyskiwanie po awarii podczas uruchamiania serwera MySQL. Więc jeśli pliki zmienią się w nieoczekiwany sposób, gdy MySQL Server jest już uruchomiony, po prostu dojdzie do wniosku, że twój dysk twardy został uszkodzony. Prawdopodobnie zgłosi błąd krytyczny i zamknie MySQL.
Również jeśli Twoi znajomi spróbują samodzielnie wprowadzić zmiany w bazie danych, ich zmiany będą kolidować z aktualizacjami z OneDrive. Wtedy ich próby zastąpienia plików zostaną ostatecznie zsynchronizowane w przeciwnym kierunku przez OneDrive i ostatecznie uszkodzą również Twoją bazę danych. Stałoby się to bez ostrzeżenia w odstępach 10-minutowych, za każdym razem, gdy OneDrive zdecyduje się na synchronizację plików.
Dlatego obawiam się, że OneDrive nie jest rozwiązaniem do udostępniania bazy danych.
Alternatywne rozwiązania, które mają szansę zadziałać, to:
-
Hosting pojedynczej instancji MySQL Server w witrynie, którą wszyscy współużytkujecie, i zapewnienie każdemu z Was klienta, który może korzystać z bazy danych. Popularnym darmowym klientem jest phpMyAdmin . W ten sposób byłaby tylko jedna instancja MySQL Server, jeden katalog danych, nawet gdyby każdy z Was był jednocześnie klientami odczytującymi i zapisującymi dane. To najprostsze rozwiązanie, które najprawdopodobniej zadziała.
-
Eksportowanie danych z instancji MySQL Server za pomocą mysqldump okresowo i umieszczając eksportowany plik w OneDrive lub wysyłając go znajomym za pośrednictwem poczty e-mail lub w jakikolwiek inny sposób. Następnie musieliby ręcznie zaimportować te dane do swojego serwera MySQL. To nadpisze wszelkie zmiany, które zrobili w swojej bazie danych, ale nie pojawi się jako uszkodzenie. Jeśli chcą wysłać zmiany z powrotem do Ciebie, mogą wykonać podobną operację:wyeksportować swoją bazę danych, umieścić plik zrzutu w OneDrive, a następnie otrzymasz plik zrzutu i zaimportujesz go do instancji MySQL Server, nadpisując wszelkie wprowadzone zmiany wykonane lokalnie od ostatniego wysłania eksportu do znajomych.
-
Użyj dodatku MySQL do wieloserwerowej replikacji synchronicznej, takiego jak Replikacja grup InnoDB lub klaster Percona XtraDB . Ale jest to prawdopodobnie zbyt skomplikowane do skonfigurowania, jeśli jesteś nowicjuszem w MySQL.