SEP sesam Extension für MySQL

From SEPsesam
Jump to: navigation, search

Copyright © SEP AG 1999-2018. Alle Rechte vorbehalten.

Jede Form der Reproduktion der Inhalte dieses Benutzerhandbuches, ganz oder in Teilen, ist nur mit der ausdrücklichen schriftlichen Erlaubnis der SEP AG gestattet. Für die Erstellung dieses Benutzerhandbuches wurde mit größtmöglicher Sorgfalt gearbeitet, um korrekte und fehlerfreie Informationen bereit stellen zu können. Trotzdem kann die SEP AG keine Gewähr für die Richtigkeit der Inhalte dieses Benutzerhandbuches übernehmen.


Einleitung

Das SEP sesam Online Modul für MySQL und MariaDB ermöglicht die Sicherung von MySQL-Datenbanken zur Laufzeit. Dies umfasst das Sicherung und Rücksicherung einer einzelnen Datenbank oder aller Datenbanken eines Servers. Als Schnittstelle für das Backup MySQL-Tool mysqldump und zum Restore das MySQL-Programm mysql genutzt. Nur die MySQL-eigenen Datenbank-Tools gewährleisten, dass die Daten nach Backup und Restore einen konsistenten Zustand aufweisen.


ACHTUNG

Alle im Dokument aufgeführten Sicherungsparameter sind keine Bestandteile von SEP sesam. Es handelt sich hierbei ausschließlich um Beispiele und Empfehlungen, wie eine MySQL-Datenbank gesichert werden kann. Auf Grund der verschiedenen Betriebs-Modi in denen eine MySQL-Datenbank betrieben werden und in den unterschiedlichsten Einsatzmöglichkeiten in den eine MySQL-Datenbank genutzt werden kann, können hier nur einige Parameter beispielgebend erwähnt werden. Weiterführende Informationen zu Backup-Strategien und den Vorgehensweisen beim Backup entnehmen Sie bitte der MySQL-Dokumentation und den Manpages zu mysqldump und mysql.

Systemvoraussetzungen

  • Unterstützte Versionen
  • SEP sesam Server Version >= 3.0.1.20
  • Bereits installierter SEP sesam Client
  • SEP sesam Extension für MySQL nur dann, wenn der SEP sesam Client Version < 3.6 installiert wurde. Der SEP sesam Client ab Version 3.6 bringt die MySQL Extension bereits mit.
  • Windows: Der Pfad zu den MySQL Executables muss Teil der Windows System PATH Variablen sein, z.B. 'PATH=%PATH%;C:\Program Files\MySQL\MySQL Server 5.6\bin'.
  • Der MySQL-Server muss als Client am SEP sesam Server registriert sein

Installation bei SEP sesam Client 3.4

Info:

Beachten Sie bitte, dass die Wartung für die SEP sesam Version 3.4 eingestellt wurde. End of maintenance announcement

RPM

Die RPM-Installation ist die bevorzugte Methode für die Installation der MySQL-Online-Extension.

  • Bitte stellen Sie sicher, dass der SEP sesam Client als RPM installiert ist.
  • Eine Pfadsicherung sollte mit diesem Klienten möglich sein

Installieren oder Updaten des SEP sesam Online DB-Moduls mit:

rpm -Uhv sesam_mysql-2.0.2-100.i386.rpm

Tarball

  • Bitte stellen Sie sicher, dass der Sesam Klient als RPM installiert ist.
  • Eine Pfadsicherung sollte mit diesem Klienten möglich sein
  • Auf dem Klienten als User "root" einloggen
  • Das Tarball (z.B. sesam-mysql.tgz) aus dem Downloadbereich herunterladen und an einem temporären Ort (z.B. /tmp) entpacken
  • Kopieren der MySQL-Komponenten in das Binary-Verzeichnis des Sesam Klienten

Die Installation wird wie folgt durchgeführt:

#> cd /tmp
#> tar xvzf sesam-mysql.tgz
#> cp /tmp/sesam-mysql/* /opt/sesam/bin/sesam/

Installation ab SEP sesam Client 3.6

Ab SEP sesam Client Version 3.6 ist das MySQL Modul in der regulären Klient-Installation enthalten, es muss keine zusätzliche Modulinstallation vorgenommen werden.

Backup Konfiguration

Die weitere Einrichtung wird in der SEP sesam GUI vorgenommen.

  • Erzeugen eines neuen Sicherungsauftrages
  • Als Auftragstyp ist MySQL zu wählen
  • Eingabe des Datenbanknamen im Feld "Quelle".
  • Unter Optionen 1 können für das Backup und dem Restore Parameter mitgegeben werden. Details sind im Abschnitt "Backup & Restore" beschrieben.
Info

Es wird empfohlen bei Job-Konfiguration ggf. User und Passwort bei den 'Rücksicherungsoptionen' auf dieselben Werte zu setzen wie die 'Sicherungsoptionen'. Bei Bedarf können die Optionen zum Zeitpunkt der Rücksicherung im Rücksicherungsassistenten angegeben werden.

  • Als Sicherungsquelle sind dabei folgende Angaben möglich:
    • <DB_NAME>
      Sicherung einer einzelnen Datenbank (z.B. my_db)
      ACHTUNG: Bitte auf die Groß-/Kleinschreibung des Datenbanknamens achten!!!
    • DB:<DB_NAME>
      Sicherung einer einzelnen Datenbank (z.B. DB:my_db). Hier wird im gesicherten Dump automatisch ein CREATE DATABASE statement erzeugt.
    • all
      Sicherung aller Datenbanken eines MySQL-Servers
  • Über die Dialogseite Optionen können der Sicherung im Feld Sicherungsoptionen weitere Parameter mitgegeben werden. Folgend einige Beispiele:

a) Um das Passwort und den Username der Datenbank zu setzen:

-a user=<DBuser>,password=<Passwort_DBusers>
Info

Die bisherige Konfiguration von username und password in der sm.ini-Datei des Klienten ist nicht mehr nötig. Diese Einstellungen werden jetzt in der GUI des Sesam Servers vorgenommen.

b) Für eine Verbesserung des Datendurchsatzes beim Backup:

-a opt

c) Für eine konsistente Sicherung einer MySQL-Datenbank vom Typ InnoDB:

-a single-transaction

d) Man kann die o. a. Parameter und Andere auch in einem Statement kombinieren:

-a user=<DBuser>,password=<Passwort_DBusers>,opt,single-transaction
[client]
user=root
password=secret
  • Weiterhin können diese Daten auch in der $HOME/.my.cnf auf dem jeweiligen Client festgelegt werden:
 root@mysql:~# cat .my.cnf
 [client]
 user=root
 password=secret
 root@mysql:~#
ACHTUNG
  1. Die mysqldump-Parameter werden OHNE doppelten Bindestrich angegeben. Sesam übersetzt die Parameter bei der Übergabe an MySQL automatisch in das richtige Format.
  2. Die Optionszeile hinter dem -a darf kein Leerzeichen enthalten.

Best Practice

Mit folgender Best Practice Empfehlung können einzelne DBs restored werden, sogar unter einem neuen Namen oder in einen anderen MySQL Server:

  • anstelle einer einzelnen ALL Sicherung muss für jede einzelne MySQL DB ein eigener Sicherungsauftrag angelegt werden
  • Alle einzelnen MySQL DB Aufträge müssen einer Auftragsgruppe hinzugefügt werden (Backup dann nur über diese Gruppe starten lassen)

Backup Konfiguration für spezielle MySQL 5.0 Funktionen (Stored Procedures, Triggers)

Im Normalfall sichert der Sesam Backup Client keine definierten "Stored Procedures" oder "Triggers". Ab MySQL 5.0 Besteht die Möglichkeit diese zusätzlichen SQL- Funktionen zu nutzen.

Es besteht allerdings die Möglichkeit, über zusätzliche Sicherungsoptionen den Sesam Backup Client anzuweisen, diese definierten Funktionen zu sichern.

Backup der Stored Procedures

Das folgende Beispiel zeigt die zusätzliche Sicherungsoption, die benötigt wird, um den Sesam Backup Klienten anzuweisen, definierte "Stored Procedures" zu sichern:

-a routines

Der entsprechende Screenshot zeigt die Definition im Backup Auftrag:

Mysql stored procedures.jpg

Backup definierter Trigger

Wie auch bei den Stored Procedures, ist es möglich definierte Trigger mit zusichern. Dies geschieht über die zusätzliche Sicherungsoption:

-a triggers

Wie dieser Screenshot zur Verdeutlichung zeigt:

Mysql triggers.jpg

Natürlich ist es auch möglich, mehrere Optionen einzutragen, um beide Funktionen (Stored Procedures sowie Trigger) mit in die Sicherung einfließen zu lassen:

-a routines -a triggers

Restore Konfiguration

Ein Restore wird über den Aufruf des Rücksicherungsassistenten gestartet. Hier wird zunächst der gesuchte Sicherungsjob gewählt, danach der Zeitraum des gewünschten Backups eingestellt. In der daraufhin erscheinenden Liste ist das gewünschte Backup zur Rücksicherung auszuwählen. Hierbei gibt es 2 Optionen:

  • kein Recover nach Restore
    Hier wird beim Restore ein Dump- File im sesam-Work- Verzeichnis (normalerweise /var/opt/sesam/var/work) des Sesam Klienten erzeugt oder in älteren Versionen auch unter /opt/sesam/bin/sesam auf dem Clienten. Der Name der Datei setzt sich aus dem Präfix mysql-, der Saveset-ID und abschließend dem Suffix .tmp zusammen. Die Datei kann nun manuell mit dem MySQL-Kommando mysql in die Datenbank importiert werden.

Beispiel:

mysql < /var/opt/sesam/var/work/mysql-SF20081128224529.tmp
  • Auto Recover nach Restore
    Ist diese Option gewählt, dann erfolgt die Rücksicherung direkt in die Datenbank. Wenn in dem rückzusichernden Backupjob nur eine einzelne Datenbank gesichert wurde, erfolgt der Restore in die Datenbank deren Name bei Rücksicherungsziel angegeben ist.


ACHTUNG

Bei Benutzung der Option Auto Recover nach Restore muss die Datenbank bereits existieren, ansonsten wird der Restore fehlschlagen. Dabei ist weiterhin darauf zu achten, dass die Ausführungsoption Existierenden Dateien überschreiben gesetzt ist, da die existierende Datenbank ansonsten nicht überschrieben wird.

Ist im Backup das CREATE DATABASE Statement nicht enthalten, können die Daten immer nur in die Original-Datenbank zurückgespielt werden. Es ist hierbei NICHT möglich das Rücksicherungsziel zu ändern.

In einem solchen Fall, wenn die Datenbank an einen anderen Ort zurückgesichert werden muss, ist nur eine Rücksicherung mit der Option kein Recover nach Restore möglich. Hier kann im Nachhinein das Dump-File editiert und damit den Erfordernissen angepasst werden. Abschließend ist der Dump manuell (s.o.) in das Zielsystem zu importieren.

Single DB Restore

Um einzelne DBs von einem MySQL Server wiederherzustellen, muss vorher folgende Voraussetzung erfüllt sein:

  • Für jede MySQL DB muss ein eigener Sicherungsauftrag angelegt werden (Die DB Aufträge können dann als Gruppe gestartet werden)
  • Mit der MySQL "all" Sicherung können momentan nur alle DBs wiederhergestellt werden.

DB Restore unter neuem Namen

Vorgehen beim Restore einer einzelnen MySQL DB in eine neue DB mit neuen Namen:

  1. Eine neue leere DB auf dem MySQL Server anlegen, welches das neue Restore Ziel ist (z.B. mit dem Namen "test")
  2. Die einzelne DB Sicherung im Wizard für den Restore auswählen, dann noch folgende Optionen auswählen:
    1. neues Rücksicherungsziel: test (siehe Step 1.)
    2. existierende Dateien überschreiben
    3. Auto Recover nach Restore
  3. Starten
  • Soll eine bestehende DB mit dem Backup überschrieben werden, muss Step 1 nicht durchgeführt werden.

Troubleshooting

MySQL Backup schlägt fehl mit: "mysqldump: Error 2013: Lost connection to MySQL server during query"

Dieser Fehler kann bei der Sicherung von MySQL Datenbanken auf Bandmedien auftreten. Die Ursache für dieses Problem ist die MySQL Variable "net_write_timeout". Der Wert dieser Variable beträgt standardmäßig 60 Sekunden.

Zwischen dem Start des MySQL Dump Vorganges und der eigentlichen Schreiboperation auf dem Bandlaufwerk können aber unter Umständen mehr als 60 Sekunden vergehen. Der MySQL Server schließt dann die inaktive Verbindung nach 60 Sekunden und das Backup schlägt deswegen fehl.

Die Lösung für dieses Problem ist das Erhöhen der "net_write_timeout" Variable in der MySQL Konfiguration. In der Optionsdatei /etc/my.cnf ist folgender Eintrag an die Optionsliste anzuhängen:

[mysqld]
 ... other options ..
net_write_timeout = 180

Die Einstellung wird erst nach einem Neustart des Dienstes aktiv. Möchte man die Einstellung sofort - ohne Neustart - vornehmen, so kann dies durch einen regulären mysql Client Befehl geschehen:

# mysql -u root -p -e "SET GLOBAL net_write_timeout=180;"

Zu beachten ist aber, dass diese Einstellung nach einem Neustart wieder auf den ursprünglichen Wert zurückgesetzt wird, wenn sie nicht ebenfalls in der Konfigurationsdatei angepasst ist. Ist die Variable bereits auf 180 Sekunden gesetzt und das Backup schlägt immer noch fehl, so ist ggf. ein höherer Wert als 180 Sekunden zu setzen. Wenn während der MySQL Sicherung ein Bandwechsel durchgeführt werden muss, kann dabei ebenfalls dieser Time-out überschritten werden. Für machen Bandroboter sind 180 s zu kurz.

Der derzeit aktive Wert kann folgendermaßen ermittelt werden:

# mysql -u root -p -e "SHOW GLOBAL VARIABLES LIKE 'net_write_timeout'"
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| net_write_timeout | 60    |
+-------------------+-------+

MySQL Sicherungen mit Passwörtern die Umlaute enthalten / Allgemeine Passwort-Sicherheit

Enthält das Passwort für den vorgegebenen Benutzer über den die Sicherung erfolgen soll Umlaute, so kann dies zu Problemen während des Backups führen. Generell wird die Eingabe von Maskierenden Hochkommata sowie Umlauten in der GUI meist unterdrückt.

In diesem Falle - und auch generell bei der Verwendung von MySQL Sicherungen - empfiehlt es sich das Passwort nicht im Auftrag, sondern in einem speziellen Konfigurationsfile abzulegen. Dies hat auch weitere Vorteile: durch das ablegen des Passwortes in der Konfigurationsdatei erscheint es nicht im Sesam Logging.

Verwendung der Konfigurationsdatei my.cnf zur Ablage des Passworts

Unter 4.2.3.3. Using Option Files werden die unterschiedlichen MySQL Konfigurationsdateien beschrieben.

Das folgende Beispiel gilt für Unix und Linux:

Es gibt die Möglichkeit eine Konfigurationsdatei des Namens .my.cnf anzulegen. Diese Datei muss, damit der SEP sesam Client sie korrekt lesen kann, in

/.my.cnf

abgelegt werden.

Die Datei hat den Folgenden Inhalt (user ist optional!):

[client]
user=myuser
password=mysqlpw

Wird der User nicht angegeben dann muss dieser in den Optionen des Sicherungs-Auftrag wie folgt angegeben werden:

-a user=username

das Passwort wird während der Sicherung aus dem Konfigurationsfile gelesen.

Konsolenlogin des Benutzers root deaktiviert

In diesem Fall wird die .my.cnf Datei nicht gefunden, da die Umgebungsvariable $HOME nicht existiert. Um dieses Problem zu beheben, muss die Datei <SESAM_ROOT>/var/ini/sm.ini um folgende zwei Zeilen erweitert werden:

[ENVIRONMENT]
HOME=/root

Anschließend den Sesam Dienst neu starten.

Einrichten eines Backup Admin Users

Das MySQL System erlaubt es einen speziellen User anzulegen, der minimale Rechte zum Sichern aller Datenbanken besitzt. Dazu wird dem User die spezielle Administrator Rolle 'BackupAdmin' zugewiesen.

Es wird empfohlen einen solchen User für die Sicherung zu verwenden.

Weitere Links/Literatur