Unterabschnitte


Der MariaDB/MySQL Datenbank Server

Allgemeines

MariaDB/MySQL ist ein vollwertiges Datenbankmanagementsystem, das sich als Standarddatenbank im Zusammenspiel mit Webanwendungen etabliert hat. In Kombination mit dem Webserver Apache und der Scriptsprache PHP spielt es in den unterschiedlichsten Anwendungsszenarien seine Stärken aus. Nahezu alle Script- und Programmiersprachen unterstützen MariaDB/MySQL.

Installation

Das Installationsscript erkennt automatisch, ob bereits ein MariaDB/MySQL Server installiert ist. Vorhandene Datenbanken werden innerhalb der Versionsline komplett übernommen.

Es können mehrere Versionslinen nebeneiander auf einer Maschine installiert werden. Somit kann, wenn eine Anwendung auf einer bestimmten älteren Version angewiesen ist, auch eine Neue Versionsline für aktuelle Anwendungen installiert werden.

Zwischen den Versionslinen können die Datenbanken nicht vollautomatisch verschoben werden. Das lässt sich über die Menüfunktionen Backup und Restore erledigen. Es ist somit auch möglich wieder auf der vorherigen Versionsline zu bleiben, wenn die Anwendung doch nicht mit der Neuen Versionsline zurecht kommen will.

Sollte für den MariaDB/MySQL User 'root' noch kein Kennwort vergeben sein, so erfragt das Installationsscript die Eingabe eines solchen.

Allgemeine Konfiguration

Die Konfiguration kann über den Menüpunkt 'Edit Configuration' geändert werden. Nach Beendigung des Editors wird die Konfiguration automatisch auf Fehler überprüft. Werden Fehler festgestellt, so sollten die entsprechenden Einträge in jedem Fall korrigiert werden.

Achtung, Übername der Konfiguration startet den MariaDB/MySQL Daemon neu und unterbricht dabei alle laufenden Datenbankzugriffe.

In dieser Dokumentaion wird für die Parameter der Name MARIADB verwendet. In den jeweiliegen Paketen wird der Paket Name verwendet und entspricht somit dem zweiten Teil des Parameters

Wie:

START_MARIADB55
START_MYSQL5173

Das Menü im Setup-Programm

Das Menü im Setup-Programm ist wie folgt aufgebaut:

  x. Service administration
  x. Database server administration    
  x. MariaDB x.x administration
  x. View documentation  
  x. Edit Configuration  
  x. Advanced configuration file handling  
  x. Start MariaDB  
  x. Stop MariaDB  
  x. Show status and connects  
  x. MariaDB security check  
  x. MariaDB Tools  
  x. List MariaDB user  
  x. Add MariaDB user  
  x. Remove MariaDB user  
  x. Change MariaDB user password  
  x. Database backup  
  x. Database restore  
  x. Database check  
  x. SQL Console  
  x. Logfile view  
  0. Exit  
  0. Exit  

Die Konfigurationsdatei

In der Konfigurationsdatei, die über das Menü zugänglich ist, sind folgende Parameter vorhanden; wer sie von Hand editieren will, findet sie unter
/etc/config.d/mariadb.

Die Parameter

Allgemeine Einstellungen

START_MARIADB

Legt fest, ob der MariaDB Server automatisch gestartet wird.

Gültige Werte: yes, no

Standardeinstellung: START_MARIADB='no'

MARIADB_NETWORK

Erlaubt das Warten auf eingehende TCP/IP Verbindungen (listen). Aus Sicherheitsgründen sollte hier nach Möglichkeit 'no' stehen, so das alle Verbindungen zu MariaDB nur über die internen Unix-Sockets erfolgen.

Gültige Werte: yes, no

Standardeinstellung: MARIADB_NETWORK='no'

MARIADB_CONNECT_PORT

Hier wird der Kommunikations-Port des Servers für TCP/IP basierte Kommunikation eingetragen. Clientsoftware erwartet hier, von Ausnahmen abgesehen, den Port 3306 des TCP Protokolles.

Wenn mehrere MariaDB/MySQL Versionen auf einer Maschine laufen ist hier jeweils ein anderer Port als der Standard Port 3306 anzugeben.

Sollte es erforderlich sein einen speziellen Port, ausserhalb der Standardvorgaben zu benutzen, wird in '/etc/mysql/portlist' ein entsprechender Eintrag gemacht, jeder Eintrag kommt in eine eigene Zeile. Wenn die Datei nicht vorhanden ist, muss sie angelegt werden.

ACHTUNG
Die Port Angabe wird auch gleichzeitig für die Identifizierung der jeweiligen lokalen Datenbank Server Instanz benutzt, sie ist auch bei einem nur lokal verfügbaren Datenbank Server so zu setzen, daß sie einmalig ist.


Gültige Werte: Port Nummer 3306, 3307, 3308 ...

Standardeinstellung: MARIADB_CONNECT_PORT=''

MARIADB_DATADIR

Hier kann ein abweichender Datenbankpfad angegeben werden. Default ist /srv/mysql/xx.

xx entspicht der Version: 55 ⇒ mariadb55

Gültige Werte: ein Absoluter Pfad

Standardeinstellung: MARIADB_DATADIR='/srv/mysql/xx'

MARIADB_SEND_MAIL_FROM

Hier muss die MailAdresse vom Admin eingeben werden, damit die Mails vom Server versendet werden können.

Wenn das Feld leer bleibt, werden keine Mail versandt.

Gültige Werte: leer, E-MailAdresse

Standardeinstellung: MARIADB_SEND_MAIL_FROM=''

MARIADB_BACKUP_CRON_SCHEDULE

Der Eintrag gibt den Startzeitpunkt und die Anzahl der Dateiüberprüfungen des Auto-Backup System an. Die 5 Werte stehen für: Minute, Stunde, Tag, Monat, Wochentag.
Die Voreinstellung - einmal täglich 01:15 Uhr - hat sich in der Praxis als brauchbar erwiesen.

Beispiel täglich 01:15 Uhr: 15 1 * * *

MARIADB_BACKUP_TARGET

Hier wird das Zielverzeichnis für die Backupvorgänge eingetragen. Auch alle vom Auto-Backup System erstellten Dateien werden dort abgelegt.

Gültige Werte: ein Absoluter Pfad

Standardeinstellung: MARIADB_BACKUP_TARGET='/srv/mysql_backup/xx'

MARIADB_BACKUP_GROUP

An dieser Stelle kann eine spezielle Gruppe für das Backup angegeben werden.

Gültige Werte: Gruppenname

Standardeinstellung: MARIADB_BACKUP_GROUP=''

MARIADB_BACKUP_N

Definiert die Anzahl der eingetragenen, mit Auto-Backup zu überwachenden, Datenbanken.

Gültige Werte: Zahl

Standardeinstellung: MARIADB_BACKUP_N='1'

MARIADB_BACKUP_x_NAME

Hier kann ein Name oder eine Bezeichnung für diesen Auftrag eingegeben werden. Er dient nur der Dokumentation.

Gültige Werte: keine Einschränkung

Standardeinstellung: MARIADB_BACKUP_x_NAME=''

MARIADB_BACKUP_x_ACTIVE

Hier kann ein Auftrag deaktiviert werden. Dabei bleiben die Einstellungen für eine eventuelle Reaktivierung erhalten.

Gültige Werte: yes, no

Standardeinstellung: MARIADB_BACKUP_x_ACTIVE='no'

MARIADB_BACKUP_x_FILE

Datenbankname der zu überwachenden Datenbank.

Gültige Werte: Datenname

Standardeinstellung: MARIADB_BACKUP_x_FILE='mysql'

MARIADB_BACKUP_x_MAX

Maximale Anzahl der gespeicherten Backups der Datenbank. Beim überschreiten des Wertes wird die jeweils älteste Backupdatei gelöscht. Wird dieser Wert auf '0' gesetzt, erfolgt kein Backupvorgang für diese Datenbank.

Gültige Werte: Zahl

Standardeinstellung: MARIADB_BACKUP_x_MAX='7'

MARIADB_BACKUP_x_FORCE

Backup für diese Datenbank immer ausführen.

Gültige Werte: yes, no

Standardeinstellung: MARIADB_BACKUP_x_FORCE='yes'

MARIADB_BACKUP_MOUNT

Ermöglicht das ausführen eines Kommandos vor dem Starten des Backup- oder Restorevorganges. Das kann z.B. das Mounten eines MO-Disk Datenträgers sein.

Beispiel: mount /mo

Standardeinstellung: MARIADB_BACKUP_MOUNT=''

MARIADB_BACKUP_UMOUNT

Ermöglicht das Ausführen eines Kommandos nach Abschluß des Cron-Autobackups. So kann z.B. ein Umount Befehl für einen MO-Disk Datenträger ausgeführt werden.

Beispiel: umount /mo

Standardeinstellung: MARIADB_BACKUP_x_UMOUNT=''

Spezielle Konfiguration

Die folgenden Parameter sollten nur bei Bedarf verändert werden.

MARIADB_DEFAULT_COLLATION

Hiermit wird der Standardzeichensatz und die Sortierung vorgegeben. Dabei sind in den 3 Zeichensatzgruppen folgende Sortierungen möglich.
latin1 (cp1252 West European) utf8 (UTF-8 Unicode) latin2 (ISO 8859-2 Central European)

Standardeinstellung: MARIADB_DEFAULT_COLLATION='utf8_unicode_ci'

MARIADB_BIND_IP_ADDRESS

Diese Option wird dann benötigt, wenn mehrere Netzwerkkarten im Server verwendet werden und nicht von allen ein Zugriff auf den MariaDB Server erlaubt werden soll. Die IP-Adresse der für die Servernutzung freigegebenen Netzwerkkarte wird dann hier eingetragen.
Dieser Wert ist nur relevant wenn MARIADB_NETWORK='yes' gesetzt ist.

Gültige Werte: IP-Adresse z.B. 127.0.0.1

Standardeinstellung: MARIADB_BIND_IP_ADDRESS=''

MARIADB_MEMORY_OPT

Hier wird das Serververhalten an den vorhandenen Arbeitsspeicher angepasst.

Mögliche Werte sind:

  'small' entspricht dabei Computern mit wenig Arbeitsspeicher
    von unter 64MB.
  'medium' dürfte für die meisten Maschinen die richtige Wahl sein.
  'large' verwendet man für SQL Server mit 512 MB und mehr.
  'huge' verwendet man fuer SQL Server mit 1024 MB und mehr.

Standardeinstellung: MARIADB_MEMORY_OPT='medium'

MARIADB_THREAD_STACK_SIZE

Angaben zur Grösse des thread-stack

Gültige Werte: 128k, 256k, ...

Standardeinstellung: MARIADB_THREAD_STACK_SIZE='128k'

MARIADB_MAX_ALLOWED_PACKET

Die Größe der Kommunikationspakete (in MB) lässt sich mit diesem Wert einstellen.

Gültige Werte: Zahl

Standardeinstellung: MARIADB_MAX_ALLOWED_PACKET='1'

MARIADB_MAX_CONNECTIONS

Maximale Anzahl gleichzeitiger Zugriffe auf den MariaDB Dienst.

Gültige Werte: Zahl

Standardeinstellung: MARIADB_MAX_CONNECTIONS='200'

MARIADB_ACTIVATE_BINLOG

Mit diesem Parameter wird das Binary Logfile eingeschaltet. Dieser Parameter kann ausgeschaltet bleiben, wenn keine Replikationen zwischen mehrern Datenbanken benötigt werden.

Gültige Werte: yes, no

Standardeinstellung: MARIADB_ACTIVATE_BINLOG='no'

MARIADB_MAX_BINLOG_SIZE

Der Parameter erlaubt die Begrenzung der maximalen Größe des Binaer- Logfiles. Die Angabe erfolgt in Byte.

Gültige Werte: Zahl

Standardeinstellung: MARIADB_MAX_BINLOG_SIZE='1024000'

Die MariaDB Tools

Das MariaDB Toolmenü ist wie folgt aufgebaut:

Auto-Backup

Da MariaDB über die Möglichkeit verfügt, im laufenden Datenbankbetrieb (ohne Anhalten des SQL-Servers) Backups zu erstellen, wurde eine Auto-Backup-Funktion integriert.

Bei den unter MARIADB_BACKUP_x_FILE eingetragenen, zu überwachenden SQL Datenbanken wird durch einen Cron Job, in vorgegebenen Abständen das Änderungsdatum abgefragt. Hat sich die Uhrzeit in einer der zur Datenbank gehörenden Dateien seit dem letzten Backup geändert, so wird eine Backup Datei erstellt. Der Backup-Dateiname wird um die Datums- und Stundeninformation der letzten Änderung im Format: -JJJJMMTT-HH erweitert. So kann theoretisch bis zu einmal stündlich ein Backup erstellt werden. Voreingestellt ist das Backup auf einmal täglich 01:15 Uhr.

Mit dem Parameter MARIADB_BACKUP_x_MAX kann die Anzahl der gespeicherten Backups pro Datenbank begrenzt werden. Beim überschreiten dieses Wertes wird die älteste Backupdatei gelöscht.

Beispiel:

mysql
|
|-> mysql-20030603-10.sql.xz
|-> mysql-20040410-17.sql.xz
|-> mysql-20040411-12.sql.xz
Das durchführen von Auto-Backup-Operationen, wie Backup erstellen oder löschen der ältesten Backup Datei, wird im System-Logfile protokolliert.

Tipps für Paketentwickler

Es gibt eine Reihe von Paketen die einen der MariaDB/MySQL Datenbank Server einsetzen.

Um an die entsprechenden default werte für den jeweiligen Datenbank Server zu gelangen ist folgende Vorgehensweise erfolgreich.

Dieses Beispiel ist für einen Datenbank Server der lokal läuft, also für 'localhost/127.0.0.1'.

Es eignen sich dafür z.B. folgende Parameter

MEIN_DATABASE_HOST = 'localhost'
MEIN_DATABASE_PORT = '3306'

Für den Parameter 'MEIN_DATABASE_PORT' ist ein Dialog Skript vorhanden, daß eingebunden werden kann.

MYSQL_COMMON_DATABASE_PORT_CUI.sh

Codeschnipsel:

# ---------------------------------------------------------------------------
# prepare MariaDB/MySQL database
# ---------------------------------------------------------------------------
prepare_database()
{
    # es werden die Server ermittelt, anhand config Daatei
    my_server=$(find /etc/config.d  -maxdepth 1 \
                -name 'mariadb' -printf '%f\n' -o \
                -name 'mariadb[0-9]*' -printf '%f\n' -o \
                -name 'mysql' -printf '%f\n' -o \
                -name 'mysql[0-9]*' -printf '%f\n')

    # fuer jeden Server wird diese Schleife durchlaufen
    for SERVER in ${my_server}
    do
       # einlesen der jeweilige config Variablen
       . /etc/config.d/${SERVER}

       # umschreiben des Paketnamens von klein nach GROSS
       var_prefix=$(echo ${SERVER} | tr [:lower:] [:upper:])

       # den Port ermitteln
       eval connect_port='${'${var_prefix}'_CONNECT_PORT}'

       # den speziellen Teil des Pfad ermittel
       my_path=$(echo ${SERVER} | sed 's|[^[:digit:]]||g')

       if [ ${MEIN_DATABASE_PORT:-0} -eq ${connect_port:-1} ]
       then
           # wenn MEIN_DATABASE_PORT gefunden
           break
       fi
    done
}

# aufrufen der Funktion
prepare_database

    # Pruefen welch default Datei zusatendig ist
    if [ -n "${my_path}" ]
    then
        # das ist die neue, flexible Version
        . /srv/mysql/defaults.info
    else
        # das ist die alte, statische Version
        . /var/lib/mysql/defaults.info
    fi

    # Pruefen ob der Datenbank Server laeuft
    if [ ! -f ${mysql_pid_file} ]
    then
        echo
        mecho --error 'MariaDB/MySQL Server is not running.'
        echo
        exit 1
    fi

    # Pruefen ob der Datenbank Server ereichbar ist,
    # gelingt der Zugriff mit dem 'root' Passwort.
    ${mysql_basedir}/mysqladmin --socket=${mysql_socket} \
                     status >/dev/null 2>&1
    if [ ${?} -eq 0 ]
    then
        bla..bla..bla...
    fi


/etc/check.d/mein-package
MEIN_DATABASE_HOST  ''  ''    NOTEMPTY
MEIN_DATABASE_PORT  ''  ''    MYSQL_COMMON_DATABASE_PORT_CUI

/etc/check.d/mein-package.exp
MYSQL_COMMON_DATABASE_PORT_CUI = '(RE:PORT)'
                               : 'Use database port 3306, 3307 ...'

Durch das includen von '/var/lib/mysql/defaults.info', bzw. über die flexible Variante in '/srv/mysql/defaults.info' können Pakete die default Werte von MariaDB/MySQL benötigen, die includierten Werte nutzen.

Enthalten sind folgende Variablen:

${mysql_basedir}
${mysql_datadir}
${mysql_pid_file}
${mysql_socket}
${mysql_log_error}
${mysql_port}

Sollte Zugriff direkt auf die Variablen in der jeweiligen config erforderlich sein. Ist folgende Vorgehensweise erfolgreich.

. /etc/config.d/${init_server}

ermittelt wird z.B dann der START_PACKAGE Parameter

var_prefix=$(echo ${init_server} | tr [:lower:] [:upper:])

eval start='${START_'${var_prefix}'}'

if [ "${start}" = "yes" ]
then
    bla..bla..bla
fi

Zugriff auf alle weiteren Parameter erfolg analog

Der lokale Zugriff auf den Datenbank Server erfolgt immer mit Angabe des socket. Ohne Angabe des socket wird immer der default Datenbank Server auf Port 3306 angesprochen.

${mysql_basedir}/mysql{admin} --socket=${mysql_socket} bla..bla

Durch das includen von '. /srv/mysql/defaults.info' werden die Variablen ${mysql_basedir} und ${mysql_socket}aufgelöst.

Der Zugriff auf einen Datenbank Server auf einer anderen Maschine erfolgt dann mit der Angabe von --host=${hostname} und --port=${port}.

Holger Bruenjes 2018-03-25