Marco Burmeister

  private Homepage



MySQL/MariaDB data Directory anpassen



Nach einer erfolgreichen Installation einer MySQL oder MariaDB Instanz kann es später mal den Bedarf geben, das data Verzeichnis an einen anderen Ort zu in der Filesystemstruktur abzulegen.
Das Vorgehen soll an dieser Stelle beschrieben werden.

Die Seite ist in die folgenden Bereich eingeteilt:

Hinweis:
Die Nutzung der hier geschilderten Anleitung geschieht auf eigene Gefahr!




top Erklärung

Die Anleitung basiert auf einer MariaDB 10.3 bzw. 10.4 Installation mit Galera Cluster und MaxScale Loadbalancer.

top Voraussetzungen

Funktionierende MariaDB Instanz mit oder ohne Galera Cluster und MaxScale LoadBalancer.

top Ablauf

Der beschrieben Ablauf ist nicht schwer umzusetzen. Wichtig ist nur die Reihenfolge einzuhalten, da sonst u.U. die Instanz nicht mehr starten könnte.
Sollte ein Cluster mit z.B. Galera eingesetzt werden, so ist das ganze Cluster zu stoppen. Nach der Umstellung auf dem ersten Knoten, kann dieser wieder gestartet werden. Die Slave Knoten können dann nachgelagert angepaßt werden.

  1. Beim Einsatz von MaxScale:
    Im MaxScale den betroffenen Datenbankserver im Maintenance Mode setzen:
    maxctrl set server [servername] maintenance
  2. Stoppen der MariaDB Instanzen:
    Normaler Befehl:
    sudo systemctl stop mysql

    Im Falles eines Clusters:
    Den ersten Knoten stoppen, falls der vorherige Befehl nicht funktionierte (erfordert das root Passwort der MariaDB Instanz):
    mysqladmin shutdown -p
  3. Anpassen der MariaDB Konfigurationsdatei
    /etc/my.cnf
    zum Beispiel mit
    vi
    Falls vorher die Daten in
    /var/lib/mysql/
    lagen und nun in
    /data
    landen sollen, so sind die Pfade in der
    my.cnf
    anzupassen.

    Vor allem ist hier der Parameter
    datadir
    anzupassen.
    In dem Zuge sollten aber auch u.a. die Parameter
    • tmpdir
    • log_bin
    • pid-file
    geprüft werden.
  4. Die Dateien aus dem Data Verzeichnis müssen nun umkopiert oder an den neuen Ort gemountet werden. Das hängt von der Ausgangssituation ab.
  5. Ist der binlog Mode aktiviert und wurden die Logs ebenfalls an einem neuen Punkt verlegt, so ist dann noch im Verzeichnis in der Datei
    mysql-bin.index
    der Pfad anzupassen.
  6. Damit sind alle Vorarbeiten abgeschlossen und die Instanz bzw. die Instanzen können wieder wie gewohnt gestartet werden.
    Im Falle eines Clusters:
    erster Knoten
    /usr/local/mysql/bin/mysqld --wsrep-new-cluster &
    weitere Knoten
    sudo systemctl start mysql

    Im Fall einer einzelnen Instanz:
    sudo systemctl start mysql
  7. Beim Einsatz von MaxScale:
    Im MaxScale für die betroffenen Datenbankserver den Maintenance Mode beenden:
    maxctrl clear server [servername] maintenance
Damit ist das data Verzeichnis erfolgreich umgestellt.

Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!
Die Nutzung der hier geschilderten Anleitung geschieht auf eigene Gefahr!