Dieser Artikel enthält wichtige Informationen zum Umstieg das neue mariadb110-Paket.

Vorbemerkungen

Unter eisfair ist es möglich, verschiedene Versionslinien der Datenbanksysteme mysql und mariadb parallel zu installieren und zu betreiben. Derzeit sind dies folgende eisfair-Pakete:

  • mysql4122: MySQL 4.1.22 (EOL)
  • mysql5173: MySQL 5.1.73 (EOL)
  • mariadb55: MariaDB: 5.5.x (EOL)
  • mariadb100: MariaDB 10.0.x (EOL)
  • mariadb102: MariaDB 10.2.x (EOL)
  • mariadb103: MariaDB 10.3.x
  • mariadb110: MariaDB 11.0.x

Upgrades werden nur innerhalb einer Versionslinie vorgenommen, so dass eine Umstieg auf eine andere Versionslinie manuell vorzunehmen ist, was hier im folgenden an einem Beispiel beschrieben werden soll.

Alle installierten Datenbanksysteme nutzen die gleiche Passwortdatei /etc/.my.cnf, in der die für automatische Vorgänge notwendigen Passwörter des Datenbank-Root-Users niedergelegt sind. Diese gelten also für sämtliche Datenbankversionen gleichzeitig.

Jede Versionslinie der Datenbanksysteme besitzen jedoch eigene systemweite Konfigurationsdatei, Socket, Datenbankverzeichnis und Datenbankbackupverzeichnis:

Datenbank Konfigurationsdatei Socket Datenbankverzeichnis

(konfigurierbar)
Datenbankbackupverzeichnis

(konfigurierbar)
mysql4122 /etc/mysql/my4122.cnf/run/mysql/4122/mysql.sock/srv/mysql/4122 /srv/mysql_backup/4122
mysql5173 /etc/mysql/my5173.cnf/run/mysql/5173/mysql.sock/srv/mysql/5173 /srv/mysql_backup/5173
mariadb55 /etc/mysql/my55.cnf /run/mysql/55/mysql.sock /srv/mysql/55 /srv/mysql_backup/55
mariadb100/etc/mysql/my100.cnf /run/mysql/100/mysql.sock /srv/mysql/100 /srv/mysql_backup/100
mariadb102/etc/mysql/my102.cnf /run/mysql/102/mysql.sock /srv/mysql/102 /srv/mysql_backup/102
mariadb103/etc/mysql/my103.cnf /run/mysql/103/mysql.sock /srv/mysql/103 /srv/mysql_backup/103
mariadb110/etc/mysql/my110.cnf /run/mysql/110/mysql.sock /srv/mysql/110 /srv/mysql_backup/110

Die Links /etc/my.cnf und /run/mysql/mysql.sock zeigen jeweils auf die Standard-Datenbankversion, also diejenige, auf die ohne zusätzliche Parameter mit Datenbankprogrammen zugegriffen werden kann, z. B.:

# ls -l /etc/my.cnf
lrwxrwxrwx 1 root root 15 Mar  8 11:12 /etc/my.cnf -> mysql/my102.cnf

# ls -l /run/mysql/mysql.sock
lrwxrwxrwx 1 root root 14 Mar  8 11:12 /run/mysql/mysql.sock -> 102/mysql.sock

Hier wäre also mariadb102 das Standard-Mariadb/MySQL-Datenbanksystem.

Jede der installierten Versionslinien muss einen eigenen Port zugeordnet haben, der in der jeweiligen Paketkonfiguration festgelegt wird. Die auf dem Port 3306 laufende Datenbankversion ist das Standard-Datenbanksystem.

Nun soll im folgenden ein mariadb102-Datenbanksystem mit den Grundeinstellungen

  • Port: 3306
  • Socket: /run/mysql/102/mysql.sock
  • Konfigurationsdatei: /etc/mysql/my102.cnf
  • Datenbankverzeichnis: /srv/mysql/102
  • Datenbankbackupverzeichnis: /srv/mysql_backup/102

auf mariadb103 upgedatet und alle Datenbanken aus mariadb102 importiert werden. Soll von einer anderen Ausgangsversion oder auf eine andere Zielversion upgegradet werden, sind die angegebenen Versionsnummer entsprechend anzupassen.

Stoppen aller Pakete, die mariadb102-Datenbanken nutzen

Nun sind alle lokalen Prozesse wie z. B. owncloud,  nextcloud oder ein Webserver, die lokal auf die Datenbanken zugreifen, bis zum Abschluss der Arbeiten zu beenden. Dies geschieht durch „Abschalten“ dieser Pakete in deren Konfiguration. Externe Clients dürfen nun auch nicht mehr auf die Datenbanken zugreifen.

Installation und Konfiguration von mariadb103

Nach der Installation von mariadb103 ist zunächst dieses neue Datenbanksystem zu konfigurieren, wobei insbesondere ein von 3306 abweichender Port anzugeben ist, z. B. 3307. Nach Abschluss der Konfiguration wird nun dieses neue Datenbanksystem eingerichtet, währenddessen man gefragt wird, ob man das Passwort für den Root-Admin festlegen möchte; dies ist zu bejahen. Das nun eingegebene Passwort wird in allen installierten mariadb/mysql-Datenbanksystem gleichermaßen eingetragen. Die Grundeinstellungen des mariadb103-Datenbanksystems sind somit:

  • Port: 3307
  • Socket: /run/mysql/103/mysql.sock
  • Konfigurationsdatei: /etc/mysql/my103.cnf
  • Datenbankverzeichnis: /srv/mysql/103
  • Datenbankbackupverzeichnis: /srv/mysql_backup/103

Bis auf

MARIADB103_CONNECT_PORT='3307'         # MARIADB103 remote port  default=3306
                                       # connect port is also uniq indentifier

MARIADB103_DATADIR='/srv/mysql/103'    # empty: default /srv/mysql/103 or datadir

MARIADB103_BACKUP_TARGET='/srv/mysql_backup/103'
                                       # backup target directory

können die weiteren Einstellungen für mariadb103 aus der mariadb102-Konfiguration (manuell) übernommen werden.

Datenbankbackups erstellen und Datenbanksystem mariadb102 stoppen

Über den Menüpunkt „Administration of services|Database server administration|MariaDB 10.2 server administration|MariaDB Tools|Backup database“ sind für alle vorhandenen Datenbanken, also auch der systeminternen Datenbank mysql, ein aktuelles Backup zu erstellen.

Anschließend wird das mariadb102-Datenbanksystem gestoppt:

# /usr/sbin/service stop mariadb102

Kopieren/Importieren der Datenbankbackups in das neue Datenbanksystem

Zunächst sind die Datenbankbackups vom alten in das neue Backupverzeichnis zu kopieren:

# cp -a /srv/mysql_backup/102/* /srv/mysql_backup/103

Backups der systeminternen Datenbank mysql bis einschließlich mariadb103 sind mit mariadb104 und höher nicht kompatibel und müssen vor dem Import mit einem Editor nachbearbeitet werden. Ist auf dem eisfair-Server das mc- und xz-Paket installiert, kann das Backup mit dem integrierten Editor (F4) bearbeitet werden. Wie im folgenden Beispiel eines Backups der mysql-Datenbank aus mariadb102 sind vor dem ersten DROP die beiden roten Zeilen zu ergänzen und danach abzuspeichern (F2):

-- MySQL dump 10.16 Distrib 10.2.24-MariaDB, for Linux (i686)
--
-- Host: localhost Database: mysql
-- ------------------------------------------------------
-- Server version 10.2.24-MariaDB


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


DROP TABLE IF EXISTS `global_priv`;

DROP VIEW IF EXISTS `user`;


--
-- Table structure for table `..........`
--

DROP TABLE IF EXISTS `..........`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;

Im Menü „Administration of services|Database server administration|MariaDB 10.3 server administration|MariaDB Tools“ importieren wir nun über „Restore database“ die eben erstellten Datenbankbackups in die neue Datenbankversion und führen anschließend noch den Punkt „Initial database update“ aus, welches die Migration der mysql-Datenbank auf MariaDB 10.3 durchführt. Hierbei können durchaus etliche „Errors“ auftauchen - bei einer erneuten Ausführung des Menüpunktes sollten keine Fehlermeldungen mehr erscheinen.

mariadb103 als neues Standard-Datenbanksystem setzen

Um mariadb103 als neues Standard-Datenbanksystem zu setzen, muss dieses noch auf den Port 3306 umgesetzt werden, nachdem vorher mariadb102 auf einen anderen freien Port umgestellt wurde:

  1. Aufruf der Konfiguration von mariadb102 und Setzen des Ports auf 3308
  2. Aufruf der Konfiguration von mariadb103 und Setzen des Ports auf 3306

Hiermit erhält mariadb103 folgende Grundeinstellungen

  • Port: 3306
  • Socket: /run/mysql/103/mysql.sock
  • Konfigurationsdatei: /etc/mysql/my103.cnf
  • Datenbankverzeichnis: /srv/mysql/103
  • Datenbankbackupverzeichnis: /srv/mysql_backup/103

und auch der Link /run/mysql/mysql.sock zeigt auf diese neue Datenbankversion, für mariadb102 gelten nun folgende Grundeinstellungen:

  • Port: 3308
  • Socket: /run/mysql/102/mysql.sock
  • Konfigurationsdatei: /etc/mysql/my102.cnf
  • Datenbankverzeichnis: /srv/mysql/102
  • Datenbankbackupverzeichnis: /srv/mysql_backup/102

Anpassungen an anderen Paketen

Ist in anderen Paketen z. B. nextcloud, owncloud, apache2_php5, apache2_php7, php7-fpm… /run/mysql/102/mysql.sock als Socket eingetragen, ist dies nun auf /run/mysql/103/mysql.sock zu ändern. Falls der Link auf das Standard-Datenbanksystem /run/mysql/mysql.sock eingetragen ist, kann das in der Regel so bleiben, da dieser nun auf mariadb103 zeigt. Es ist zwingend die Konfiguration eines eventuell installierten phpmyadmin55-Paketes aufzurufen, damit die Socketeinstellung korrigiert wird.

Mit folgendem Befehl können Pakete ermittelt werden, in deren Konfiguration der Socket der alten Datenbankversion gesetzt wurde:

# grep "/run/mysql/102/mysql.sock" /etc/config.d/*

Eventuell sind solche Korrekturen auch an eigenen oder manuell installierten Programmen oder Skripten erforderlich.

Neustarten vorab gestoppter Pakete

Die zu Beginn der Umstellung gestoppten Pakete wie nextcloud, owncloud oder ein Webserver können nun wieder gestartet werden. Auch externe Clients dürfen nun wieder das Datenbanksystem nutzen.

Deinstallieren des alten Datenbanksystem mariadb102

Nach eine Testphase kann das alte Datenbanksystem mariadb102 samt Daten und Konfiguration über das „Package administration“-Menü deinstalliert werden.