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?
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.
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 ).
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).
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.
Antworten:
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:
sdXN
jetzt).Verschiebe das mysql data Verzeichnis von Ubuntu auf die neue Partition.
Verwendung
mv
speichert Berechtigungen.Erstellen Sie ein neues MySQL-Verzeichnis
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.Um beim Booten automatisch zu aktivieren, suchen Sie die Partitions-UUID und das Gebietsschema und bearbeiten Sie sie
/etc/fstab
.Ä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' aufX:/mysql_data
(ersetzenX:
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
quelle
lower_case_table_names=1
funktioniert einwandfrei. Ohne Ihre Mount-Optionen bin ich auf diesen Bug gestoßen (der meiner Meinung nach tatsächlich ein Bug ist).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/mysql
beim Start ausgeführt werden (vorausgesetzt, Sie mounten Ihr Windows-Laufwerk/media/windows
mit 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.cnf
fügt ,innodb_log_group_home_dir = /var/log/mysql
so dass die Protokolle an das MySQL - Fehlerprotokoll als nächstes gehen.quelle