Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zmienić folder danych MySQL 8.0. Czy mogę używać folderów OneDrive?

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Prześlij obraz na serwer i zapisz ścieżkę obrazu w bazie danych mysql

  2. WebApp (Tomcat-jdbc) Połączenie z pulą bazy danych zgłaszające wyjątek porzucenia

  3. Limit MySQL od kolejności malejącej

  4. PDO bindParam() z wieloma nazwanymi parametrami

  5. Nie można usunąć ani zaktualizować wiersza nadrzędnego:ograniczenie klucza obcego nie działa