Kann ich MySQL-Datenbankdateien beim Dual-Boot mit Windows teilen?

12

Ich möchte in Ubuntu und Windows (Dual Boot) meine MySql-Datenbankdateien verwenden, die sich auf einer NTFS-Partition befinden. Wird es funktionieren? Irgendwelche Fallstricke?

maaartinus
quelle
4
FÜR DIE AUFNAHME DER GEMEINSCHAFT: Der Benutzer fragt nach der Kompatibilität von MySQL-Datenformaten zwischen Ubuntu Linux und Microsoft Windows. Der Benutzer fragt sich, ob die im Ubuntu Linux-Format für MySQL gespeicherten Daten mit der Art und Weise kompatibel sind, in der die Windows-Version von MySQL Daten speichert, sodass die Datenbankinformationen sowohl in Windows als auch in MySQL bearbeitet und wiederhergestellt werden können.
Thomas Ward
A: Ich habe hier im Unix & Linux StackExchange eine ausführliche Antwort auf diese Frage gegeben .
Elliptical View

Antworten:

9

Ja, es funktioniert aber mit einigen Macken. MySQL verwendet plattformübergreifend dieselben Dateiformate, sodass Sie lediglich das Datenverzeichnis freigeben müssen. Ein Problem ist, dass das Datenverzeichnis mysql als Eigentümer und Gruppe in Ubuntu haben muss. Bei Windows wird zwischen Groß- und Kleinschreibung unterschieden, und bei Linux wird zwischen Groß- und Kleinschreibung unterschieden. Achten Sie daher darauf, dass alle Namen einheitlich sind.

Vom Start zum Ziel; Wenn Sie bereits Dinge eingerichtet haben, müssen Sie möglicherweise einige Anpassungen vornehmen, um sie an Ihr Setup anzupassen:

  • Installieren und konfigurieren Sie MySQL auf beiden Systemen.
  • Stoppen Sie den MySQL-Server, wenn er ausgeführt wird.
  • Erstellen Sie eine neue NTFS-Partition. Markieren Sie den Gerätenamen (nennen wir ihn sdXNjetzt).
  • Verschiebe das mysql data Verzeichnis von Ubuntu auf die neue Partition.

    mkdir /{mountpoint}/mysql_data
    sudo mv /var/lib/mysql /{mountpoint/mysql_data
    

    Verwendung mvspeichert Berechtigungen.

  • Erstellen Sie ein neues MySQL-Verzeichnis

    sudo mkdir /var/lib/mysql
    
  • Hängen Sie die NTFS-Partition unter ein /var/lib/mysql. Ändern Sie den Gerätenamen in den Namen, den er beim Erstellen der NTFS-Partition erhalten hat.

    sudo mount /dev/{sdXN} /var/lib/mysql -t ntfs-3g -o uid=mysql,gid=mysql,umask=0077
    
  • Um beim Booten automatisch zu aktivieren, suchen Sie die Partitions-UUID und das Gebietsschema und bearbeiten Sie sie /etc/fstab.

    ls -l /dev/disk/by-uuid
    locale -a
    sudo gedit /etc/fstab   
    UUID={number_found_with_the_ls-l} /var/lib/mysql ntfs-3g uid=mysql,gid=mysql,umask=0077,locale={your_locale}.utf8  0  0
    
  • Ändern Sie den 'datadir'-Pfad in /etc/mysql/my.cnf, um auf zu zeigen/var/lib/mysql/mysql_data

  • Starten Sie den MySQL-Server und testen Sie ihn.

  • Bearbeiten Sie die Windows-Konfigurationsdatei ( my.ini) und setzen Sie 'datadir' auf X:/mysql_data(ersetzen X:Sie, wo Sie es unter Windows bereitstellen ).

Zusammengestellt aus Thema 1442148 auf UF.org .

Ich habe die Ubuntu-Version zum Laufen gebracht; also teilweise ungetestet da ich kein windows habe

Rinzwind
quelle
Sehr nette Antwort! Nur zwei Kommentare: Es gibt bereits viele gemischte Groß- und Kleinschreibung und die Verwendung lower_case_table_names=1funktioniert einwandfrei. Ohne Ihre Mount-Optionen bin ich auf diesen Bug gestoßen (der meiner Meinung nach tatsächlich ein Bug ist).
Maaartinus
"sudo mv / var / lib / mysql / dev / {sdXN} / mysql_data" gibt einen Fehler aus. Siehe unix.stackexchange.com/questions/310433/…
Elliptical view
1

Wenn Sie einer früheren Windows-Umgebung eine Linux-Partition hinzugefügt haben, können Sie die Datenbank mit nur geringfügigen Änderungen verwenden. Lange Version hier , kurze Version:

Sie müssen mount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysqlbeim Start ausgeführt werden (vorausgesetzt, Sie mounten Ihr Windows-Laufwerk /media/windowsmit fstab).

Um die Überprüfung der Innodb-Protokollgröße zu umgehen, müssen Sie die Innodb-Protokolle für die Ubuntu-Partition verschieben. In my.cnffügt , innodb_log_group_home_dir = /var/log/mysqlso dass die Protokolle an das MySQL - Fehlerprotokoll als nächstes gehen.

Josiah
quelle