EDVler-Blog.de: IT in der Praxis

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

You can follow any responses to this entry through the RSS 2.0 feed.