Verschieben der MySQL-InnoDB-Datenbank auf eigenes Laufwerk
In meiner MySQL-installation habe ich eine InnoDB-Datenbank, die ich kenne, sehr groß, so habe ich beschlossen, verschieben Sie es auf Ihrer eigenen Festplatte. Ich hatte gehofft, dies durch verschieben der Dateien auf die andere Festplatte und erstellen Sie dann ein symlink, aber ich laufen in Fehler!
Dies ist, was ich getan habe:
1) In meinem.cnf habe ich
[mysqld]
innodb_file_per_table
(Das funktioniert, habe ich ein .ibd pro .frm in den Datenbank-Ordner.)
2)ich habe geprüft, ob symbolische Links sind ok mit SHOW VARIABLES LIKE "have_symlink";
(Ich weiß, dass die Dokumentation sagt:
Symlinks werden vollständig unterstützt, nur für
MyISAM-Tabellen. Für Dateien, die von
Tabellen für andere Speicher-engines, die Sie
kann merkwürdige Probleme, wenn Sie versuchen,
Verwendung von symbolischen links.
Aber ich brauche foreign keys...)
3) zog ich den Datenbank-Ordner und erstellt einen symlink.
4) mysql neu Gestartet und ausprobiert:
mysql> USE db_name
Database changed
mysql> SHOW TABLES;
ERROR 1018 (HY000): Can't read dir of './db_name/' (errno: 13)
mysql> exit
user@comp# perror 13
OS error code 13: Permission denied
symlink ist (wie erwartet) lrwxrwxrwx mysql mysql db_name -> /path-to/db_name/
Datenbank-Ordner-Berechtigungen drwx------ mysql mysql
alle Datei-Berechtigungen sind -rw-rw---- mysql mysql
Ich bin mit Ubuntu 10.04 Server mit MySQL 5.1.41 (Standard apt).
Haben Sie dies erfolgreich getan?
Ich will, dass der rest der Datenbanken auf dem system-Laufwerk (für drupal und solche Dinge) und bewegen sich nur diese bestimmten aus dem Daten-Verzeichnis. Sorry, wenn dies nicht klar aus der Frage.
Das könnte sein, mehr geeignet, um serverfault.com - voting zu migrieren...
Jr : warum dun u erstellen Sie eine weitere Datenbank, und montieren Sie das Datenbank-Verzeichnis an Ihre gewünschte Festplatte ?
Wie meinst du das? Über eine separate MySQL-Instanz mit den Daten-Verzeichnis auf die neue Festplatte? Wäre das nicht sehr ordentlich... Mit einer einzigen MySQL-Instanz alle Datenbanken, die erstellt werden, erstellt die relativ zum data-Verzeichnis. Ich versuche, verschieben Sie eine von Ihnen aus dort...
InformationsquelleAutor Norling | 2010-11-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, deine Lösung ist die beste Idee. Siehe mein Beitrag hier:
http://www.mysqlperformanceblog.com/2010/12/25/spreading-ibd-files-across-multiple-disks-the-optimization-that-isnt/
Gibt es auch diesen anderen thread hier:
Innodb; mehrere Daten-Verzeichnisse
InformationsquelleAutor Morgan Tocker
Stellt sich heraus, diese funktioniert aber mein Alter Feind, der appArmor blockiert MySQL aus der Lektüre der verschobene Verzeichnis.
Zeilen hinzufügen:
Danke für die Hilfe!
Danke. Das war meine Lösung.
Danke! Vergessen Sie nicht, starten Sie den apparmor-Dienst nach dem ändern dieser
auf Ubuntu 12.10 habe ich neu starten, beide apparmor-und der mysql-Dienst zu haben, die neue Politik wirksam wird.
InformationsquelleAutor Norling
Norling Jr meinen Tag gerettet mit der AppArmor-Tipp, aber da hatte ich einige Probleme, konfigurieren es, Schreibe ich eine ausführlichere Antwort. Ich bin mit Ubuntu 12.04.
Starten immer root zu speichern, die Notwendigkeit zu geben, die sudos:
Folgenden Die MySQL-docs, Sie ersten Schritt Ihre bereits erstellt Datenbank-Verzeichnis auf einen anderen Pfad:
Hier war meine erste Falle. Überprüfen Sie, ob der mysql-user hat Zugriff auf diesen neuen Weg:
Wenn Sie Zugriff verweigert, sollten Sie wahrscheinlich geben Sie die execute-Berechtigung für alle Eltern dir:
Test, um wieder auf die Datei zugreifen. Wenn es immer noch nicht funktioniert, versuchen Sie, eine Frage auf Stack Overflow:-)
Link der dir neue Position und geben Sie die korrekten Berechtigungen:
Lassen Sie uns Bearbeiten Sie die AppArmor-lokale Konfiguration-Datei. Sie durfte nicht ändern /etc/apparmor.d/usr.sbin.mysqld-Datei. Bearbeiten der lokalen conf, so dass Sie nicht verlieren, nach system-updates:
hinzufügen Norling Jr-Konfigurationen:
Verpassen Sie nicht die letzten Komma. Speichern Sie die Datei und laden Sie die AppArmor-Konfiguration:
Nicht nur AppArmor reload MySql-Konfiguration, aber auch testen, wenn es keine syntax-Fehler (eine sehr wichtige Sache). Wenn Sie nicht führen Sie den parser, die neue conf nicht angewendet werden.
Schließlich öffnen Sie einfach den mysql-client und geben Sie
SHOW DATABASES
. Wenn Ihre Datenbank angezeigt wird, ist alles wahrscheinlich in Ordnung. Geben Sie 'VERWENDEN yourdatabase' für eine weitere Prüfung.Einen robusteren test würde auch die mysql-reload-service: "service mysql restart" und versuchen, auf Ihre Datenbank zuzugreifen.
Nun werde ich mich erinnern wenn ich das nächste mal tun müssen. Google und SO gemeinsam das beste notebook der Welt 🙂
InformationsquelleAutor neves
Sollte es möglich sein, mit lokalen mounts (Bindungen) mit den entsprechenden Berechtigungen und mount oprions (einschließlich der selinux oder apparmor-Kontexte):
Obwohl ich noch nicht getestet, diese Lösung so verwenden Sie auf eigene Gefahr.
InformationsquelleAutor Thomas