Liebe Community,
für alle, die gern die interne MariaDB-Version 5.5.57 auf eine aktuelle 10.4.x anheben möchten, ohne Container zu installieren, hier ein Vorschlag:
Voraussetzung: Entware-Std ist installiert. Dieses gibt es unter
https://github.com/Entware/Entware/wiki/Install-on-QNAP-NAS
Nach Installation des Paketes kann über SSH mit folgendem Befehl der aktuelle MariaDB10.4.x-Server und -Client installiert werden:
opkg install mariadb-server-extra mariadb-client-extra nano
Nach der Installation mit
cd /opt/etc/mysql/conf.d/
in das Konfigurationsverzeichnis wechseln.
Nun die Konfiguration bearbeiten:
Damit der MariaDB10.4.x-Server als Ersatz für den internen MariaDB-Server genutzt werden kann, müssen folgende Einträge angepasst werden:
[client]
socket = /tmp/mysql.sock
port = 3306
[mysqld]
#
# * Basic Settings
#
user = admin
pid-file = /opt/var/run/mysqld/mysqld.pid
socket = /tmp/mysql.sock
port = 3306
basedir = /opt
# Don't put this on flash memory
# Figure out where you are going to put the databases and run
# mysql_install_db --force
datadir = /share/databases
Alles anzeigen
In meinem Beispiel habe ich einen separaten Ordner "databases" für die Datenbankfiles in der Systemsteuerung des NAS angelegt. Somit ist auch eine Sicherung der Datenbankdateien einfacher möglich.
Sollte der Server nicht nur von "localhost" (127.0.0.1) erreichbar sein, so muss die folgende Zeile in der Konfiguration mit einem "#" auskommentiert werden:
#bind-address = 127.0.0.1
Nun müssen ggf. noch die unter dem bisherigen SQL-Server genutzten Datenbanken gesichert werden. Hierzu folgenden Befehl ausführen:
/usr/local/mariadb/bin/mysql -u root -p
Das Passwort entspricht dem bei der Einrichtung des SQL-Servers über die Systemsteuerung vergebenen Passwort.
Im SQL-Server können nun mit folgendem Befehl die genutzten Datenbanken abgefragt werden:
Gesichert werden muss neben den eigentlichen Nutzerdatenbanken auch die Datenbank "mysql", die die Einstellungen und Nutzer beinhaltet.
Die Sicherung kann z.B. mit folgendem Befehl in das Verzeichnis /share/Public erfolgen:
/usr/local/mariadb/bin/mysqldump --single-transaction -h localhost -u root -p DATENBANKNAME >/share/Public/DATENBANKNAME.sql
Nachdem alle Datenbanken gesichert sind, muss der eingebaute SQL-Server über die Systemsteuerung --> Anwendungen --> SQL-Server abgeschaltet werden.
Nachdem der eingebaute SQL-Server nicht mehr läuft, kann der neue MariaDB10.4.x-Server gestartet werden:
mysql_install_db --force
/opt/etc/init.d/S70mysqld restart
Nun muss als erstes die mysql-DB wieder importiert werden, damit die User-Einstellungen übernommen werden:
mysql -h localhost -u admin -p #ACHTUNG: hier noch ein leeres Passwort verwenden
DROP DATABASE mysql;
CREATE DATABASE mysql;
quit
mysql -h localhost -u admin -p mysql </share/Public/mysql.sql
Ab hier gilt nun wieder das ursprüngliche Passwort für den "root"-Nutzer, welches beim internen SQL-Server vergeben war.
Jetzt nur noch die Nutzerdatenbanken, die gemäß oben beschriebenem Vorgehen in /share/Public gesichert wurden, wieder einspielen:
mysql -h localhost -u root -p -e "CREATE DATABASE DATENBANKNAME"
mysql -h localhost -u root -p DATENBANKNAME </share/Public/DATENBANKNAME.sql
FERTIG!
Die Konfiguration ist Reboot-fest, so dass ab sofort auch nach einem Reboot der MariaDB10.4.x-Server genutzt wird.
Eine (regelmäßige) Aktualisierung kann mit folgenden Befehlen durchgeführt werden:
Empfehlenswert ist es, den Order mit den Datenbankdateien in das regelmäßige Backup einzubinden. Für noch mehr Sicherheit sollte ein Cron-Job angelegt werden, der regelmäßig mit folgendem Befehl die einzelnen Datenbanken sichert:
mysqldump --single-transaction -h localhost -u root -p DATENBANKNAME> /share/Public/DATENBANKNAME.sql
...wobei natürlich der Pfad /share/Public/DATENBANKNAME.sql individuell angepasst werden sollte.