NEWS
MariaDB in anderes Verzeichnis umziehen?
-
Hi,
ich habe gemäß dieser Anleitung https://www.youtube.com/watch?v=iMn74QPRFQs&t=346s die MariaDB inkl. SQL-Adapter installiert. Alles supi soweit.
Nun habe ich mir eine SSD gekauft und unter Debian Buster eingehangen und einen festen Mointpoint eingerichtet. Ich habe dann die DB gestoppt und das komplette Verzeichnis via
cp -ar /var/lib/mysql/ /mnt/SSDdata/
inkl. aller Rechte usw. auf die SSD kopiert. Nun habe ich in /etc/mysql/mariadb.conf.d/50-server.cnf das data_dir auf das entsprechende Verzeichnis geändert.
Leider kann sich die DB dann nicht mehr verbinden- 127.0.0.1 error to resolve host...
Ich vermute hier eine Rechteproblematik. Ideen bzw. was kann ich tun um die Maria DB auf die SSD zu kopieren oder gleich im richtigen Verzeichnis zu installieren? Da nur wenig Daten drin sind, ist ein Datenverlust total zu verschmerzen. -
Überprüf mal die Berechtigungen der Dateien und Verzeichnisse. Eventuell hast Du die Dateien beim Kopieren einem neuen Benutzer zugeordnet, und der Prozess, unter dem Mariadb läuft, kann auf die Dateien nicht mehr zugreifen.
Also auf Kommandozeile mal eingeben
ls -la /var/lib/mysql/
-> zeigt Eigentümer, Gruppe und die Berechtigungen an, und das dann mit
ls -la /mnt/SSDdata/
vergleichenmit chmod und chown kann man die Berechtigungen sowie Eigentümer anpassen. Danach Mariadb neu starten.
und zudem mal in /var/log nachsehen. Dort sind logfiles. In syslog steht ev. noch mehr zum Fehler drin
-
@Becks0815 Danke. Wird probiert...sobald ich wieder am ioBroker bin.
-
@Becks0815 Danke für Deine Hilfe.
Die Rechte waren korrekt kopiert.Nachdem ich alles nochmal überprüft hatte und das data_dir ändern wollte... ist mir eine Kleinigkeit aufgefallen:
Unter Linux ist die Gross/Kleinschreibung wichtig! Ich glaube ich hatte das "SSDdata" damals klein geschrieben.
Zwischenfrage: Hast Du vielleicht einen Tip, wie ich den Mountpoint "flexibel" einhängen kann... also so plug&play. Im Moment startet der Raspi ohne angeschlossene SSD nicht.
-
Leider ist nach Umzug der Datenbank auf die SSD ein Problem aufgetreten. Nur dafür hab ich eigentlich die SSD angeschafft.
Nach einem Reboot startet die MariaDB nicht mehr und natürlich kann sich der SQL-Adapter dann nicht verbinden. Ich muss dann den Adapter stoppen, den Mysql-Service stoppen, starten, SQL-Adapter starten und dann löppt es wieder.
Das Problem ist reproduzierbar, nach Änderung auf die SD-Karte ist alles wieder ok.
Es ist immer ein Problem mit Aria. Der Zugriff auf eine Datei ist nicht möglich. Ich habe keine Idee warum das durch das andeer DATA_DIR problematisch ist.
Aria engine is not enabled or did not start. The Aria engine must be enabled to continue as mysqld was configured with --with-aria-tmp-tables
2019-11-21 21:47:24 0 [Note] /usr/sbin/mysqld (initiated by: unknown): Normal shutdown 2019-11-21 21:49:12 0 [ERROR] mysqld: Can't lock aria control file '/mnt/SSDdata/mysql/aria_log_control' for exclusive use, error: 11. Will retry for 30 seconds 2019-11-21 21:49:43 0 [ERROR] mysqld: Got error 'Could not get an exclusive lock; file is probably in use by another process' when trying to use aria control file '/mnt/SSDdata/mysql/aria_log_control' 2019-11-21 21:49:43 0 [ERROR] Plugin 'Aria' init function returned error. 2019-11-21 21:49:43 0 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed. 2019-11-21 21:49:43 0 [Note] InnoDB: Using Linux native AIO 2019-11-21 21:49:43 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2019-11-21 21:49:43 0 [Note] InnoDB: Uses event mutexes
Ich habe festgestellt, wenn ich einige Zeit ....warte und dann
service mysql stop
service mysql startmache (vermutlich geht dann auch sudo service mysql restart problemlos), dann läuft die DB auch wieder und der Adapter verbindet sich selbstständig. Als Workaround könnt man ja nen CronJob machen, finde ich allerdings nicht optimal.
-
Noch eine Ergänzung:
systemctl status mariadb.serviceNov 24 16:25:18 raspberrypi4 systemd[1]: mariadb.service: Got notification message from PID 777, but reception only permitted for main PID which is currently not known```