Ich habe eine EC2-Instanz eingerichtet und versuche, das MySQL-Datenverzeichnis auf den bereitgestellten Speicher zu verschieben.
Das Standarddatenverzeichnis ist:
/opt/bitnami/mysql/data
Ich habe das Verzeichnis komplett kopiert nach
/mnt/mysql_data
Anschließend habe ich den Pfad in my.cnf wie folgt geändert:
datadir=/mnt/mysql_data
und habe das alte Verzeichnis umbenannt, um sicherzugehen, dass ich das neue verwende.
Ich habe MySQL die entsprechenden Berechtigungen für das neue Verzeichnis erteilt, aber ich glaube nicht, dass MySQL überhaupt versucht, dorthin zu gelangen. Wenn ich versuche, MySQL neu zu starten, erhalte ich Fehlermeldungen zum vorherigen Datenverzeichnis:
sudo /opt/bitnami/ctlscript.sh start mysql
111122 18:50:50 mysqld_safe Logging to '/opt/bitnami/mysql/data/mysqld.log'.
touch: cannot touch `/opt/bitnami/mysql/data/mysqld.log': No such file or directory
chown: cannot access `/opt/bitnami/mysql/data/mysqld.log': No such file or directory
111122 18:50:50 mysqld_safe Starting mysqld.bin daemon with databases from /opt/bitnami/mysql/data
/opt/bitnami/mysql/bin/mysqld_safe: 739: cannot create /opt/bitnami/mysql/data/mysqld.log: Directory nonexistent
eval: 1: cannot create /opt/bitnami/mysql/data/mysqld.log: Directory nonexistent
111122 18:50:50 mysqld_safe mysqld from pid file /opt/bitnami/mysql/data/ip-10-120-253-190.pid ended
/opt/bitnami/mysql/bin/mysqld_safe: 783: cannot create /opt/bitnami/mysql/data/mysqld.log: Directory nonexistent
Habe ich irgendwo einen Konfigurationsschritt übersehen? Ich habe gesehen, wie andere mit Problemen es gelöst haben, indem sie Apparmor angepasst haben, aber ich habe nicht einmal die Datei „/etc/apparmor.d/usr.sbin.mysqld“, die sie ändern sollten. Außerdem scheint mein Problem nicht zu sein, dass MySQL nicht auf das neue Verzeichnis zugreifen kann, sondern dass es immer noch das alte verwendet.
Antwort1
Es stellte sich heraus, dass Amazons Kontrollskript "/opt/bitnami/ctlscript.sh" ein MySQL-Konfigurationsskript unter /opt/bitnami/mysql/scripts/ctl.sh ausführt.
Ärgerlicherweise überschreibt dieses Skript einige wichtige Einstellungen aus der Datei my.cnf. Eine Aktualisierung dort behebt das Problem.
Antwort2
Sie müssen mysql so konfigurieren, dass es das neue Protokollverzeichnis verwendet. Bearbeiten Sie dazu /etc/mysql/my.cnf (in diesem Fall verwende ich Debian) und aktualisieren Sie
general_log_file = /mnt/data/log
Viel Glück.