MySQL Datenpfad ändern unter Ubuntu 8.04.2
An und für sich ist der Umzug eines MySQL Datenbestands schnell erklärt.
Es gibt aber unter Ubuntu einen kleinen Fallstrick der einem viele Stunden kosten kann.
Was zu beachten ist habe ich hier zusammengefasst.
Das Vorgehen:
- Neues Datenverzeichnis erstellen (ggf. Volume anlegen und fstab bearbeiten)
mkdir /data/ mkfs.ext3 -j -lDATA /dev/sdb1 tune2fs -i365d /dev/sdb1 mount /dev/sdb1 /data mkdir /data/mysql
- MySQL stoppen
/etc/init.d/mysql stop
- Daten vom alten Verzeichnis in das neue Verzeichnis kopieren
cp -rv /var/lib/mysql/* /data/mysql/ chown mysql:mysql /data/mysql -Rv
- /etc/mysql/my.cnf anpassen
In dem Bereich [mysqld] nach datadir suchen und diesen anpassen.
datadir=/data/mysql
- Wichtig: Eigentlich könnte der SQL Server jetzt wieder gestartet werden ABER es erscheinen dann folgende Fehler:
-
Jul 22 13:02:35 klipasrv0015 mysqld[8973]: 100722 13:02:35 [Warning] Can't create test file /data/mysql/klipasrv0015.lower-test Jul 22 13:02:35 klipasrv0015 mysqld[8973]: 100722 13:02:35 [Warning] Can't create test file /data/mysql/klipasrv0015.lower-test Jul 22 13:02:35 klipasrv0015 mysqld[8973]: 100722 13:02:35 InnoDB: Operating system error number 13 in a file operation. Jul 22 13:02:35 klipasrv0015 mysqld[8973]: InnoDB: The error means mysqld does not have the access rights to Jul 22 13:02:35 klipasrv0015 mysqld[8973]: InnoDB: the directory. Jul 22 13:02:35 klipasrv0015 mysqld[8973]: InnoDB: File name ./ibdata1 Jul 22 13:02:35 klipasrv0015 mysqld[8973]: InnoDB: File operation call: 'open'. Jul 22 13:02:35 klipasrv0015 mysqld[8973]: InnoDB: Cannot continue operation.
Ursache hierfür ist appamor!
Appmor muss so konfiguriert werden, dass es für mysqld den Zugriff auf den neuen Datenpfad erlaubt.
Dies geschieht folgendermaßen: -
vi /etc/apparmor.d/usr.sbin.mysqld
In der Config muss der Bereich /usr/sbin/mysqld um die Angaben
/data/mysql/ r, /data/mysql/** rwk,
ergänzt werden
- Anschließend APPAmor neustarten
/etc/init.d/apparmor restart
- .. und mysql starten
/etc/init.d/mysql start
und alles sollte funktionieren
root@klipasrv0015:/home/dummy# /etc/init.d/mysql start * Starting MySQL database server mysqld [ OK ] * Checking for corrupt, not cleanly closed and upgrade needing tables. root@klipasrv0015:/home/dummy#
Jul 22 13:02:35 klipasrv0015 mysqld[8973]: 100722 13:02:35 [Warning] Can’t create test file /data/mysql/klipasrv0015.lower-test
Jul 22 13:02:35 klipasrv0015 mysqld[8973]: 100722 13:02:35 InnoDB: Operating system error number 13 in a file operation.
Jul 22 13:02:35 klipasrv0015 mysqld[8973]: InnoDB: The error means mysqld does not have the access rights to
Jul 22 13:02:35 klipasrv0015 mysqld[8973]: InnoDB: the directory.
Jul 22 13:02:35 klipasrv0015 mysqld[8973]: InnoDB: File name ./ibdata1
Jul 22 13:02:35 klipasrv0015 mysqld[8973]: InnoDB: File operation call: ‚open‘.
Jul 22 13:02:35 klipasrv0015 mysqld[8973]: InnoDB: Cannot continue operation.