So ändern Sie ein MySQL-Datenverzeichnis mithilfe eines Symlinks an einen neuen Speicherort

Einführung

Datenbanken werden im Laufe der Zeit immer größer und vergrößern manchmal den Speicherplatz im Dateisystem. Sie können auch auf E / A-Konflikte stoßen, wenn sich diese auf derselben Partition wie der Rest des Betriebssystems befinden. RAID, Netzwerkblockspeicher und andere Geräte können Redundanz und andere wünschenswerte Funktionen bieten. Unabhängig davon, ob Sie mehr Speicherplatz hinzufügen, Möglichkeiten zur Leistungsoptimierung evaluieren oder andere Speicherfunktionen nutzen möchten, führt Sie dieses Lernprogramm durch die Verlagerung des MySQL-Datenverzeichnisses.

Die Anweisungen hier sind für Server geeignet, auf denen eine einzelne Instanz von MySQL ausgeführt wird. Wenn Sie mehrere Instanzen haben, finden Sie in der Anleitung https://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location-on-ubuntu-16- 04 [So verschieben Sie ein MySQL-Datenverzeichnis unter Ubuntu 16.04 an einen neuen Speicherort] enthält Anweisungen zum expliziten Ändern des Speicherorts über Konfigurationseinstellungen.

Voraussetzungen

Um diesen Leitfaden zu vervollständigen, benötigen Sie:

  • * Ein Ubuntu 16.04-Server mit einem Nicht-Root-Benutzer mit + sudo + -Privilegien *. Weitere Informationen zum Einrichten eines Benutzers mit diesen Berechtigungen finden Sie unter Initial Server Setup with Ubuntu 16.04 leiten.

  • * Ein MySQL Server *. Wenn Sie noch keinen eingerichtet haben, lesen Sie den How To Install MySQL on Ubuntu 16.04 Leitfaden kann dir helfen.

  • * Ein Backup Ihrer Datenbanken *. Sofern Sie nicht mit einer Neuinstallation von MySQL arbeiten, sollten Sie sicherstellen, dass Sie eine Sicherungskopie Ihrer Daten haben. Der Leitfaden Sichern von MySQL-Datenbanken auf einem Ubuntu-VPS kann Ihnen dabei helfen.

In diesem Beispiel werden die Daten auf ein Blockspeichergerät verschoben, das unter "+ / mnt / volume-nyc1-01 +" installiert ist. Informationen zum Einrichten finden Sie im Handbuch How To Use Block Storage on DigitalOcean.

Unabhängig davon, welchen zugrunde liegenden Speicher Sie verwenden, können Sie mit diesem Handbuch das Datenverzeichnis an einen neuen Speicherort verschieben.

Schritt 1 - Verschieben des MySQL-Datenverzeichnisses

Um die Integrität der Daten sicherzustellen, fahren wir MySQL herunter:

sudo systemctl stop mysql

+ systemctl + zeigt nicht das Ergebnis aller Dienstverwaltungsbefehle an. Wenn Sie also sicher sein möchten, dass Sie erfolgreich waren, verwenden Sie den folgenden Befehl:

sudo systemctl status mysql

Sie können sicher sein, dass es heruntergefahren wird, wenn die letzte Zeile der Ausgabe anzeigt, dass der Server gestoppt ist:

Output. . .
Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

Wenn der Server heruntergefahren ist, verschieben wir das vorhandene Datenbankverzeichnis an den neuen Speicherort:

sudo mv /var/lib/mysql

Als Nächstes erstellen wir den symbolischen Link:

sudo ln -s  /var/lib/mysql

Wenn der Symlink vorhanden ist, scheint dies der richtige Zeitpunkt zu sein, um MySQL erneut aufzurufen. Bevor wir dies erfolgreich durchführen können, müssen wir jedoch noch eine weitere Sache konfigurieren.

Schritt 2 - Konfigurieren der AppArmor-Zugriffssteuerungsregeln

Wenn Sie das MySQL-Verzeichnis in ein anderes Dateisystem als den MySQL-Server verschieben, müssen Sie einen AppArmor-Alias ​​erstellen.

Bearbeiten Sie zum Hinzufügen des Alias ​​die AppArmor-Datei + alias +:

sudo nano /etc/apparmor.d/tunables/alias

Fügen Sie am Ende der Datei die folgende Alias-Regel hinzu:

/etc/apparmor.d/tunables/alias

. . .
alias /var/lib/mysql/ -> ,
. . .

Starten Sie AppArmor neu, damit die Änderungen wirksam werden:

sudo systemctl restart apparmor

Jetzt können wir MySQL starten.

sudo systemctl start mysql
sudo systemctl status mysql

Nutzen Sie nach dem Neustart von MySQL die Gelegenheit, um sicherzustellen, dass Ihre Daten in Ordnung sind und MySQL wie erwartet funktioniert.

Fazit

In diesem Tutorial haben wir die Daten von MySQL verschoben und einen Symlink verwendet, um MySQL auf den neuen Speicherort aufmerksam zu machen. Wir haben auch die AppArmor-ACLs von Ubuntu aktualisiert, um die Anpassung zu ermöglichen. Obwohl wir ein Blockspeichergerät verwendet haben, sollten die Anweisungen hier geeignet sein, den Speicherort des Datenverzeichnisses unabhängig von der zugrunde liegenden Technologie neu zu definieren.

Dieser Ansatz eignet sich nur, wenn Sie eine einzelne Instanz von MySQL ausführen. Wenn Sie mehrere MySQL-Instanzen auf einem einzigen Server unterstützen müssen, lesen Sie https://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location- on-ubuntu-16-04 [So verschieben Sie ein MySQL-Datenverzeichnis unter Ubuntu 16.04 an einen neuen Speicherort] kann Ihnen dabei helfen.