Der Beaglebone Black hat standardmäßig 2 GB eingebauten Flash-Speicher, allerdings kann das das je nach installiertem Betriebssystem und den installierten Programmen irgendwann recht knapp werden.

Zudem ist es sinvoll, gewisse Anwendungen wie zum Beispiel ein php-basierendes CMS mit MySQL-Datenbank auf Schnellerem Speicher wie USB-Flash oder einer externen USB-Festplatte laufen zu lassen.

Wie man den Speicher eines Beaglebone Black erweitern kann, kann man hier nachlesen Speicher auf dem Beaglebone Black erweitern

Per default speichert MySQL seine Datenbanken unter Debian in dem Ordner /var/lib/mysql. Wenn man auf dem internen Speicher keinen Platz mehr hat und den Speicherort auf externe Speichermedien verschieben möchte, ist das eigentlich recht einfach.

  1. Einen Ordner auf dem externen Speicher erstellen, z.B. mit
    mkdir /path-to-mountpoint/mysql/
  2. dem Ordner die notwendigen Rechte zuweisen mit
    chown -R mysql:mysql /path-to-mountpoint/mysql/

    (chown = change owner und durch das -R werden die Rechte rekursiv gesetzt, also auch Ordner und Unterordner)

  3. Die Dateien aus dem alten Verzeichnis in den neuen Ordner kopieren mit
    cp -r /var/lib/mysql/* /path-to-mountpoint/mysql/
  4. die Konfigurationsdatei von MySQL anpassen

Zum Anpassen der Konfigurationsdatei wird diese in einem beliebigen Editor geöffnet - wie zum Beispiel nano.
Die Datei ist etwas umfangreicher, aber der wichtige Part ist dieser

[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

Dort ist der Eintrag "datadir" so anzupassen, dass er auf den neu erstellten Ordner verweist.

[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /path-to-mountpoint/mysql/
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

Die Datei abspeichern und mit service mysql restart MySQL neu starten und dann war es das auch schon.

Anmerkung
Nach dem Verschieben der Datenbanken auf eine über USB angeschlossene Festplatte kam es immer wieder zu Problemen und Fehlern bei MySQL. Verschieben auf eine installierte SD-Karte läuft dagegen problemlos.

Comments

Tue, 06/09/2015 - 8:43pm

Danke für diese Anleitung.
Ich musste nach dem Kopieren nochmal chmod ausführen weil alle files im neuen mysql-ordner noch dem Benutzer root gehörten.
Die my.cnf ist im Ordner /etc/mysql zu finden.
Klappt! :)

Tue, 09/01/2015 - 3:39pm

Meine Empfehlung den Kopiervorgang mittels:

cp -p -R /var/lib/mysql/* /neuer/pfad/

Dann werden die korrekten Berechtigungen mit übernommen auch wenn man als root am Terminal den Vorgang startet!

:)

Tue, 10/06/2015 - 6:08pm

Hi,

Datenbank Dateien kopieren ohne vorher den Server zu Stoppen == nogo

Erst Stoppen, dann kopieren, so verhindert man gegebenfalls Datenverlust.

Gruß
DapperDan

Tue, 10/06/2015 - 11:05pm

Hey DapperDan

Ups .. natürlich. Aber das war irgendwie so selbstverständlich, dass ich es nicht extra hin geschrieben hatte. Aber du hast natürlich recht: Das gehört natürlich dazu!

Danke für den Hinweis!

Gruß vom Bjoern

Thu, 03/24/2016 - 9:57am

Hi,

super Anleitung.
Ich habe alles umgesetzt wie in der Anleitung beschrieben und mit den Hinweisen der Kommentaren.

Leider lässt sich meine MySQL Dienst nicht mehr starten!
Wieso ?

Gruß
Alexander

Sat, 03/26/2016 - 6:43pm

Hey Alexander

Das kann natürlich mehrere Gründe habe.
Als erstes würde ich mal checken, ob die Pfade alle richtig sind und ob die Berechtigungen für das Verzeichnis und die Dateien stimmen.

Gruß Bjoern

Mon, 03/28/2016 - 10:46pm

Hi,

ich habe alles üpberprüft, aber es geht immer noch nicht.

Wed, 03/30/2016 - 12:29am

Hi,

insgesamt hab ich nirgend anders eine bessere und kompaktere Anleitung gefunden - danke dafür, aber ich bekomme auch die folgende Fehlermeldung, obwohl die Rechte passen ...

...Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in lock_may_be_available() ...

Thu, 10/19/2017 - 12:12pm

Hi,

erstmal danke für die Anleitung.
Habe sie soweit gemacht jedoch kommt beim service mysql restart folgende Fehlermeldung am ende dabei raus:

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

Kann mir vielleicht jemand helfen?

Fri, 10/27/2017 - 6:59pm

Hey Costantino,

Was kommt denn raus, wenn du „systemctl status mysql.service“ und „journalctl -xe“ ausführst.
Mit den Details könnte man sicher besser sagen, was da weggeflogen ist.

Gruß Bjoern

Add comment

Please insert your mail adress. Your mail address will not be displayed.