Immer größere Datenmassen sicher zu speichern ist eine Herausforderung für jede IT-Infrastruktur. Schon mit Gigabit-Ethernet lassen sich aber ... (mehr)

Neue Funktionen

Neue Funktionen des MySQL-Kerns bieten dem Administrator zusätzliche Möglichkeiten, den MySQL-Server bequemer und sicherer zu warten. Eine typische Aufgabe ist das Beenden von MySQL-Prozessen per »KILL« . Unter Last kann es passieren, dass ein Prozess, den »SHOW PROCESSLIST« als Idle anzeigt, im Moment des Kill wieder mit einer neuen Abfrage beschäftigt ist. Das Kill-if-Idle-Patch erweiter Kill um die Option, den Prozess nur zu beenden, wenn er untätig ist: »KILL IF_IDLE Prozess-ID« . Das verhindert es, einen Prozess unbeabsichtigt zu beenden, während er gerade eine Anfrage verarbeitet.

LVM- und ZFS-Snapshots gelten als einfachste Methoden für das weitgehend unterbrechungsfreie Sichern einer Innodb-Datenbank im laufenden Betrieb. Wer auf diese Methode nicht zurückgreifen kann oder möchte und auf das klassische Dumpfile angewiesen ist, muss dafür Sorge tragen, dass sich während des Dumpens die Daten im MySQL-Server nicht ändern.

Der klassische Weg dafür war bisher »FLUSH TABLES WITH READ LOCK« . Dies reicht aber im Fall von Innodb nicht zwangsläufig, da auch Hintergrundprozesse in die Datenbank schreiben. Das Innodb-Freeze-Patch friert nach Ausführen von »SET GLOBAL innodb_disallow_writes = 1« alle Prozesse ein, die schreibend auf Innodb-Daten zugreifen, und ermöglicht das anschließende Erstellen eines Backups. Abschließend deaktiviert »SET GLOBAL innodb_disallow_writes = 0« das Einfrieren wieder.

Performance-Verbesserungen

Innodb hat sich durch die Unterstützung von Transaktionen und Zeilen-basiertes Locking zu einer modernen Alternative der mittlerweile betagten Myisam-Engine entwickelt. Trotz des Performance-Gewinns bei Schreibzugriffen durch Zeilen-basiertes Locking, kostet der Overhead für die Unterstützung von Transaktionen, Foreign Keys und weiteren Funktionen (auch bei Nichtnutzung) wertvolle Rechenzyklen und Hardware-I/O-Ressourcen. MySQL-Systeme, die unter hoher Last stehen, sind daher auf eine optimal konfigurierte und leistungsfähige Innodb-Engine angewiesen.

Für die mit MySQL ausgelieferte Version von Innodb gibt es bereits eine Vielzahl von Patches zur Performance-Verbesserung, von denen einige in der Ourdelta.org-Version enthalten sind. Nennenswert ist hier zum Beispiel ein überarbeitetes RW-Lock, das insbesondere das Locking-Verhalten auf Mehrprozessor-Systemen verbessert.

In der Praxis am einfachsten einzusetzen sind Patches für Innodb, die unter Beibehaltung vollständiger Kompatibilität transparente Optimierungen an der Engine vornehmen. Eine objektive Messung des Performance-Gewinns ist in der Regel schwierig, da die Leistung des MySQL-Servers stark von Hardware, Konfiguration und verwendeten Daten abhängt. Die ausführlichste und zuverlässigste Quelle ist der MySQL-Performance-Blog [5], der regelmäßig ausführliche Messergebnisse veröffentlicht.

Verbesserung durch das selektive Einspielen von Patches an der herkömmlichen Innodb-Engine stellen heute einen eher konservativen Ansatz dar. Mehr verspricht der Einsatz alternativer Datenbank-Engines. Zunehmende Verbreitung finden die Innodb-kompatiblen Engines Innodb-Plugin und Percona-Xtradb.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2020