Auf unserem /var
-Volume war der Platz knapp geworden; die MySQL-Datenbank war zu stark angewachsen. Um das System noch laufen lassen zu können, war es notwendig, die Datenbank auf ein anderes Dateisystem umzuziehen – in unserem Falle war das auf das /home
-Volume.
Um beim Kopieren die Eigentümer und Berechtigungen nicht zu verlieren, habe ich statt mit cp
mit cpio
kopiert:
cd /var/lib
find mysql | cpio -pdmv /home
Anschließend noch die Logdatei in /var/log
umhängen
rm /var/log/mysqld.log
ln -s /home/mysql/mysqld.log /var/log/mysqld.log
Und die Originalinstallation für den Fall der Fälle sichern:
mv /var/lib/mysql /var/lib/mysql.bak
Im nächsten Schritt geht es darum, der Datenbank mitzuteilen, wo sie sich befindet. Das ist zum einen in der Konfigurationsdatei /etc/my.cnf
, aber auch im Startskript /usr/sbin/rcmysql
. Dort habe ich alle Vorkommen von /var/lib/mysql
in /home/mysql
geändert.
Der MySQL-Server lies sich danach zwar starten, für den Client erhielt ich aber dennoch die stereotype Fehlermeldung
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
Etwas googlen brachte zum Vorschein, dass in der my.cf
ein Abschnitt [Client]
anzulegen sei, der dem Client mitteilt, wo sich diese Socket-Datei befindet. Nur: Dieser Abschnitt war von Anfang an vorhanden, wurde aber offenbar nicht beachtet. Daraufhin habe ich mich zu einer etwas unsauberen, aber tadellos funktionierenden Lösung entschieden: Nach einem
ln -s /home/mysql /var/lib/mysql
und einem anschließenden Reboot tut auch der Client wieder, und die Applikationen laufen.