Der MariaDB-Server der Zentralen Informatik

MySQL heisst neu MariaDB

Am 18. April 2018 wurden alle MySQL-Datenbanken auf das weiterentwickelte Nachfolgesystem MariaDB migriert.

MariaDB ist kompatibel zu MySQL, somit können alle Applikationen, die bisher mit einer MySQL-Datenbank betrieben wurden, neu MariaDB nutzen. Es sind keine Änderungen an SQL-Abfragen oder der Verbindungskennung nötig.

Beschrieb

MariaDB ist eine einfach zu bedienende relationale Multi-User Datenbank, die auf verschiedenen Plattformen angeboten wird. Von uns wird MariaDB im Rahmen des MariaDB-Servers angeboten und ist v.a. für den Gebrauch mit Scriptsprachen (z.B. PHP oder Perl) für eine Webanbindung geeignet.

MariaDB Cluster

Für datenbankbasierte Anwendungen, welche eine hohe Verfügbarkeit erfordern, bietet die zentrale Informatik einen MariaDB Cluster an. Durch den verteilten Betrieb der Datenbank auf mehreren Servern wird eine hohe Ausfallsicherheit erreicht und Systemarbeiten sind im laufenden Betrieb möglich.

Allerdings ist der Betrieb einer Datenbank auf dem Cluster aus technischen Gründen mit folgenden Einschränkungen verbunden:

  1. Alle Tabellen müssen im InnoDB Format vorliegen und über einen Primärschlüssel verfügen.
  2. Schema-Änderungen mittels ALTER TABLE ... und CREATE INDEX ... sind nur während des Wartungsfensters jeweils Donnerstags von 16 bis 17 Uhr möglich.
  3. Spalten mit dem AUTO_INCREMENT Attribut weisen Sprünge von der Grösse 3 auf. Das heisst die generierte Sequenz lautet 1,4,7,10, .. statt 1,2,3,4,...

Falls Ihre Applikation diese Anforderungen erfüllen, können Sie durch die entsprechende Option im Antragsformular eine Datenbank auf dem Cluster betreiben.

Eine bestehende Datenbank kann mit diesem Formular von der Master/Slave-Umgebung auf den Cluster und auch wieder zurück (Cluster -> Master/Slave) migriert werden.

Applikationsseitig muss der Port 3308 für die Verbindung zu mysql.uzh.ch verwendet werden.

Antrag durch Koordinator oder Webmoderator

Damit MariaDB genutzt werden kann, muss bei uns eine Datenbank beantragt werden, dies geschieht direkt über ein Webformular.

Verwalten der Datenbank

Ein einfaches Tool zum Verwalten finden Sie in phpMyAdmin (das SSL-Server Zertifikat dieses Servers ist durch die CA der Universität Zürich ausgestellt, um den Hinweis darauf beim Verbindungsaufbau zu unterdrücken, empfehlen wir Ihnen, das Root-Zertifikat in Ihrem Browser einzubauen).

Backup

Automatisch

Alle Datenbanken werden in einem Rhythmus von 3 Stunden als Dump komplett gesichert und die Backups werden granuliert 12 Tage aufbewahrt. Damit haben Sie als Benutzer im Notfall Zugriff auf die entsprechenden Backups. Wichtig ist, dass im Falle eines Desasters schnell reagiert wird. Bei Bedarf senden Sie eine Mail an den DBA oder melden sich an unser Call Center (43333).

Manuell

Diese automatische Art des Backups birgt aber auch Risiken. Wird nicht innerhalb von 4 Stunden nach einer Störung auf das Backup zurückgegriffen, wird das Backup mit den neuen Inhalten der Datenbank überschrieben und somit muss auf ein älteres Backup zurückgegriffen werden. Deshalb empfiehlt sich z.B vor Strukturänderungen o. Ä. ein manuelles Backup, auf welches Sie jederzeit zugreifen können. Eine Beschreibung hierzu finden Sie in unserem ZInfo. Je nach Geschmack empfiehlt sich hier die MySQL Workbench oder das Programm mysqldump:

shell> mysqldump -u username -p -h mysql.uzh.ch \
--events --routines databasename > dumpfile

Restore / Import

Backups (dumps) können einfach via phpMyAdmin zurückgespielt werden (Reiter Importieren) sofern sie kleiner als 20MB sind. Backups, die grösser sind müssen mit anderen Werkzeugen importiert werden z.B. dem mysql-client (Vorsicht: Zuerst den Inhalt des Dumpfiles kontrollieren):

shell> mysql -u username -p -h mysql.uzh.ch databasename < dumpfile

oder mit der MySQL Workbench. Bei sehr grossen Backups (> 500MB) sollten sie Kontakt mit dem webmaster der UZH aufnehmen, damit der Import überwacht werden kann.

Aufruf im php-Programm

Interessant ist der Aufruf in einem php-Programm. Die Datenbank im folgenden Beispiel heisst "inventar":

<?php
// mysql Verbindung und Aufruf der Datenbank inventar

$server = "mysql.uzh.ch";  // MySQL-Server
$user   = "wwwclient";     // MySQL-User
$pass   = "";              // MySQL-Kennwort
$db     = "inventar";      // Datenbank
$conn = mysqli_connect($server, $user, $pass, $db);
if (!$conn) {
   print "connection failed.";
}
?>

Anschliessend kann z.B. die php-Funktion mysqli_query() verwendet werden, um eine SQL-Abfrage abzusetzen und den Abfrage-Report im WWW zu publizieren.

Dokumentation