Move MySQL default storage place

The BeagleBone Black has a standard 2 GB built-in flash memory , but that can sometime be pretty close depending on the installed operating system and installed programs .

Moreover, it is quite useful to have certain applications, such as a php- based CMS to run with MySQL database on faster memory such as USB flash or an external USB hard drive .

How to add storage to a BeagleBone Black is described here Enhance Storage on the Beaglebone Black

By default , MySQL stores its databases in Debian in the folder /var/lib/mysql . If you go to the internal memory has no more space and want to move the location to external storage media , which is actually pretty easy.

  1. create a folder on the external storage, for example,
    mkdir /path-to-mountpoint/mysql/
  2. set the necessary permissions for the folder with
    chown -R mysql:mysql /path-to-mountpoint/mysql/

    ( chown = change owner and by the -R the permissions are set recursively , ie including folders and subfolders )

  3. copy all files from the old directory to the new folder
    cp -r /var/lib/mysql/* /path-to-mountpoint/mysql/ 
  4. adjust the configuration file of MySQL

To customize the configuration file open it in a text editor of your choice – such as nano.
The file is a little more complex , but the important part is this

[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

There, the entry „datadir“ is adjusted in that way, that it points to the newly created folder.

[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

Save the file and restart MySQL with service mysql restart and thats it.

Note
After moving the databases to a USB-attached hard disk, it always came to problems and errors in MySQL. Moving to an installed SD card on the other hand runs smoothly.

11 Gedanken zu “Move MySQL default storage place

  1. 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! 🙂

  2. 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!

    🙂

  3. Hi,

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

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

    Gruß
    DapperDan

    • 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

  4. 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

  5. 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() …

Schreibe einen Kommentar