Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So ändern Sie den MySQL 8.0-Datenordner. Kann ich OneDrive-Ordner verwenden?

Wenn Sie eine Datenbank mit ein paar anderen Benutzern teilen möchten, wird es nicht funktionieren, das Datadir in OneDrive abzulegen.

MySQL speichert Daten in den Dateien unter dem Datadir, das stimmt. Sie werden in Dateien namens tablespaces gespeichert welche die .ibd haben Erweiterung.

Aber wenn Sie INSERT/UPDATE/DELETE-Operationen ausführen, werden Daten vorübergehend im Arbeitsspeicher und in den Transaktionsprotokollen (ib_logfile* . MySQL muss eine feine Koordination zwischen diesen vornehmen, um Daten auf dauerhafte Weise zu speichern und gleichzeitig eine gute Leistung sicherzustellen. Es funktioniert gut, aber nur, wenn der MySQL-Server der einzige Prozess ist, der in die Dateien schreibt.

OneDrive koordiniert sich überhaupt nicht mit MySQL. Es wird regelmäßig nach Dateien suchen, die sich seit der letzten Synchronisierung geändert haben. Das Intervall, in dem OneDrive Dateien überprüft, beträgt etwa alle 10 Minuten, und dies ist nicht konfigurierbar.

OneDrive kann die Dateien zu einem Zeitpunkt synchronisieren, nachdem Sie einige INSERT/UPDATE/DELETE-Vorgänge durchgeführt haben und die Daten im RAM geändert, aber noch nicht in den Tablespace-Dateien auf der Festplatte aktualisiert wurden.

Sobald Sie eine Änderung festgeschrieben haben, muss sie auch sicher im Transaktionsprotokoll gespeichert werden, selbst wenn sie nicht im Tablespace aktualisiert wird. Aber wenn Ihre Freunde die Dateien in diesem Zustand erhalten (das Transaktionsprotokoll enthält Änderungen, die nicht im Tablespace vorhanden sind), können sie die Daten aus Ihrem RAM rekonstruieren, die sie nicht erhalten haben. Dies wird InnoDB-Absturzwiederherstellung genannt . MySQL tut dies automatisch, wenn es startet und feststellt, dass das Transaktionslog Änderungen enthält, die nicht im Tablespace sind. Es wird davon ausgegangen, dass Sie einen plötzlichen Neustart hatten und den Inhalt des Arbeitsspeichers verloren haben.

Wenn Ihre Freunde versuchen, ihren MySQL-Server einfach ununterbrochen am Laufen zu halten und ein Datadir lesen, das gleichzeitig von ihrem einen OneDrive aktualisiert wird, überschreibt es im Grunde ihre Dateien und MySQL wird verwirrt. Es prüft nur, ob beim Start von MySQL Server eine Wiederherstellung nach einem Absturz durchgeführt werden soll. Wenn sich also die Dateien auf unerwartete Weise ändern, während MySQL Server bereits läuft, wird daraus nur der Schluss gezogen, dass Ihre Festplatte beschädigt wurde. Es wird wahrscheinlich einen schwerwiegenden Fehler melden und MySQL herunterfahren.

Auch wenn Ihre Freunde versuchen, eigene Änderungen an der Datenbank vorzunehmen, würden ihre Änderungen mit den Updates von OneDrive in Konflikt geraten. Dann würden ihre Versuche, Dateien zu überschreiben, schließlich über OneDrive in die entgegengesetzte Richtung synchronisiert und würden schließlich auch Ihre Datenbank beschädigen. Dies geschah ohne Vorwarnung in 10-Minuten-Intervallen, wenn OneDrive die Dateisynchronisierung durchführte.

Ich fürchte also, OneDrive ist nicht die Lösung, um Ihre Datenbank zu teilen.

Alternativen, die eine Chance auf Arbeit haben, sind:

  • Das Hosten einer einzelnen Instanz von MySQL Server auf einer Website, die Sie alle gemeinsam nutzen, und das Bereitstellen eines Clients für jeden von Ihnen, der die Datenbank verwenden kann. Ein beliebter kostenloser Client ist phpMyAdmin . Auf diese Weise gäbe es nur eine Instanz von MySQL Server, ein Datenverzeichnis, obwohl Sie beide gleichzeitig Clients wären, die Daten lesen und schreiben. Dies ist die einfachste Lösung, die am ehesten funktioniert.

  • Exportieren der Daten aus Ihrer MySQL Server-Instanz mit mysqldump in regelmäßigen Abständen und stellen Sie die Exportdatei auf OneDrive oder senden Sie sie per E-Mail oder auf andere Weise an Ihre Freunde. Dann müssten sie diese Daten manuell auf ihren MySQL-Server importieren. Dadurch würden alle Änderungen, die sie an ihrer Datenbank vorgenommen hatten, überschrieben, aber es würde nicht als Beschädigung erscheinen. Wenn sie Änderungen an Sie zurücksenden möchten, könnten sie einen ähnlichen Vorgang ausführen:Exportieren Sie ihre Datenbank, legen Sie die Dump-Datei auf OneDrive ab, dann erhalten Sie ihre Dump-Datei und importieren sie in Ihre MySQL Server-Instanz, wobei alle Änderungen überschrieben werden, die Sie hatten lokal erledigt, seit Sie Ihren Export das letzte Mal an Ihre Freunde gesendet haben.

  • Verwenden Sie ein MySQL-Add-on für die synchrone Multi-Server-Replikation, z. B. InnoDB-Gruppenreplikation oder Percona XtraDB Cluster . Aber das ist wahrscheinlich zu komplex für Sie, wenn Sie ein MySQL-Neuling sind.