Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Lesereplikate für MySQL und MariaDB

Wie Exponential Leseabfragen mit UseSlaveServer und den Schlüsseln SlaveServer und SlaverServer an Replikate von MySQL oder MariaDB sendet, wie ein Replikat gewählt wird, was Replikationsverzögerung für Redakteure und…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/database-administrators/mysql-read-replicas.md

On this page

This page is a translation. Read the English original

Lesereplikate für MySQL und MariaDB

Diese Seite richtet sich an Datenbankadministratoren, die MySQL oder MariaDB mit Replikaten betreiben und möchten, dass Exponential sie verwendet. Sie beantwortet: welche Einstellungen Lesezugriffe an ein Replikat senden, wie das Replikat gewählt wird, was Verzögerung für die Website bedeutet und wie die anderen Engines im Vergleich abschneiden. MySQL und MariaDB sind die einzigen Engines mit eingebauter Aufteilung von Lesezugriffen in Exponential. Quelle: Replikate und settings/site.ini.

Inhalt

  1. Die Einstellungen
  2. Wie ein Replikat gewählt wird
  3. Replikationsverzögerung
  4. Konten auf den Replikaten
  5. Brauchen Sie überhaupt Replikate?
  6. Andere Engines
  7. Checkliste

Die Einstellungen

Die Schlüssel stehen in site.ini [DatabaseSettings]; die mitgelieferte Datei hat sie auskommentiert:

# settings/override/site.ini.append.php
[DatabaseSettings]
UseSlaveServer=enabled
SlaveServerArray[]
SlaveServerArray[]=replica1.example.internal
SlaveServerArray[]=replica2.example.internal
SlaveServerPort[]
SlaveServerPort[]=3306
SlaveServerPort[]=3306
SlaverServerUser[]
SlaverServerUser[]=exponential_ro
SlaverServerUser[]=exponential_ro
SlaverServerPassword[]
SlaverServerPassword[]=<the password>
SlaverServerPassword[]=<the password>
SlaverServerDatabase[]
SlaverServerDatabase[]=exponential
SlaverServerDatabase[]=exponential

Die Schlüssel für Benutzer, Passwort und Datenbank werden wirklich Slaver... geschrieben; das ist der Name, den der Code liest. Die Listen sind parallel: Der zweite Eintrag jeder Liste gehört zum zweiten Replikat. Die leere Zeile Key[] am Anfang setzt die Liste zurück, sodass nur die Einträge dieser Datei zählen.

Leeren Sie nach einer Änderung den INI-Cache, laden Sie PHP-FPM neu und starten Sie Velocity neu (Datenbankeinstellungen lesen und ändern).

Wie ein Replikat gewählt wird

Mit UseSlaveServer=enabled wählt eZDB::instance() beim Aufbau der Verbindung ein Replikat zufällig (mt_rand() in lib/ezdb/classes/ezdb.php): unter PHP-FPM je Anfrage. Lesezugriffe gehen an dieses Replikat; Schreibzugriffe gehen immer an Server. Setup > Systeminformationen, Teil Datenbankverbindung, zeigt das verwendete Lesereplikat (Systeminformationen).

Replikationsverzögerung

Eine Seite kann einige Sekunden alte Inhalte zeigen, während ein Replikat aufholt. In der Praxis:

  • Ein Redakteur, der veröffentlicht und die Seite sofort ansieht, sieht womöglich die vorherige Version, solange die Verzögerung anhält;
  • die Caches (View-Cache, Antwort-Cache von Velocity) können diese ältere Darstellung dann bis zu ihrer nächsten Erneuerung behalten.

Halten Sie die Verzögerung niedrig und überwachen Sie sie auf den Replikaten mit Ihren üblichen Werkzeugen (zum Beispiel SHOW REPLICA STATUS auf MySQL 8.0.22 und neuer, SHOW SLAVE STATUS auf älteren Releases und MariaDB). Exponential selbst misst keine Verzögerung und nimmt ein verzögertes Replikat nicht aus der Rotation; das ist Aufgabe Ihrer Replikationsüberwachung oder eines Proxys vor den Replikaten.

Konten auf den Replikaten

Ein Replikat-Konto braucht Leserechte; der Kernel legt für einige Leseoperationen temporäre Tabellen an, geben Sie ihm also auch CREATE TEMPORARY TABLES, oder testen Sie die Lesewege, auf die Sie sich verlassen (Suche, Listen), auf Staging mit einem streng nur lesenden Konto. Bewahren Sie das Replikat-Passwort wie das Hauptpasswort in settings/override/ auf.

Brauchen Sie überhaupt Replikate?

Die meisten Seitenaufrufe erreichen die Datenbank nicht: Der Antwort-Cache von Velocity, der Cache der Inhaltsansichten und der Template-Block-Cache antworten zuerst, und der SQL-Abfrage-Cache kann wiederholte SELECTs beantworten (Leistung und Skalierung). Messen Sie zuerst mit exp:benchmark und dem SQL-Profiler (Langsame Abfragen finden). Replikate lohnen ihren Betrieb, wenn ungecachte Lesezugriffe (angemeldete Redakteure, Suche, die ersten Aufrufe nach dem Leeren) die Primärdatenbank wirklich belasten.

Andere Engines

EngineSkalierung von Lesezugriffen
PostgreSQLReplikation ist Sache von PostgreSQL; Exponential hat dafür keine Aufteilung von Lesezugriffen. Ein Proxy vor PostgreSQL ist eine serverseitige Entscheidung.
MongoDBReplica Sets sind Sache von MongoDB.
OracleExtern (Data Guard); ezoracle.ini bietet Failover über mehrere Listener.
SQLiteKeine Replikation; ein Host.

Quelle: 9.7 Vergleich.

Checkliste

  • To do: Die Listen der Hosts, Ports, Benutzer, Passwörter und Datenbanken sind gleich lang.
  • To do: Das Replikat-Konto kann jede Tabelle lesen und temporäre Tabellen anlegen.
  • To do: Die Verzögerung wird außerhalb von Exponential überwacht.
  • To do: Redakteure wissen, dass eine frische Veröffentlichung mit kurzer Verzögerung erscheinen kann.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x