Bewährte Verfahren für „ Databases for MySQL “

Bewährte Verfahren
Bewährte Verfahren Anmerkungen
Stellen Sie den richtigen Wert für max_allowed_packet ein. In Replikationskonfigurationen, in denen große Transaktionen oder binlogs das Limit überschreiten, kann eine Überschreitung der Größe von max_allowed_packet dazu führen, dass das Replikat in den Zustand einer fehlgeschlagenen Kopie gerät und das Risiko besteht, dass das Primärsystem gesperrt wird. Die Verwendung von BLOB- oder VARTEXT-Spalten zur Speicherung von Dateiinhalten in MySQL kann zu Problemen bei der Replikation und Wiederherstellung von Backups führen. Es wird empfohlen, max_allowed_packet auf den maximalen Wert einzustellen, wenn Sie Daten unterschiedlicher Länge in eine Spalte laden. Verwenden Sie außerdem nicht mehrere breite LONGBLOB-Spalten in einer bestimmten Tabelle, da dies zu Situationen führen kann, in denen die Zeilengröße die maximal zulässige Größe übersteigt und Wiederherstellungen mit Point-in-Time möglicherweise nicht funktionieren.
Implementieren Sie Primärschlüssel in Tabellen mit großer Zeilenzahl. Das Hinzufügen eines Primärschlüssels zu jeder Tabelle mit mehr als 5K Zeilen optimiert die Replikation erheblich und verhindert übermäßige Verzögerungen. Es wird empfohlen, einen Primärschlüssel für jede Tabelle zu definieren, für die DELETE- oder UPDATE-Operationen von mehr als 5K Zeilen in einzelnen Anweisungen durchgeführt werden. Wenn Sie keinen Primärschlüssel hinzufügen können, löschen Sie in Stapeln von < 5K Zeilen, mit Übertragungen pro Stapel.
Bevorzugen Sie DROP TABLE und TRUNCATE TABLE gegenüber DELETE für die gesamte Tabelle, wenn möglich. Die Replikation protokolliert jede Zeilenlöschung, was den Prozess erheblich verlangsamen kann. Es wird empfohlen, Löschungen und Aktualisierungen zu gruppieren. Beachten Sie, dass es sich bei DROP, CREATE und TRUNCATE um DDL-Anweisungen handelt, die nicht während einer Sicherung abgeschlossen werden, sondern warten, bis der Sicherungsvorgang abgeschlossen ist. Die Protokolleinträge zeigen Warnmeldungen für die Zeit während des Backups, in der diese Anweisungen blockiert werden. Sie können die Backup-Zeiten abschätzen, indem Sie den Bereich "Verwendete Festplatten" des Überwachungs-Dashboards überprüfen. Als Faustregel gilt, dass die Sicherung von 500 GB an Daten etwa 90 Minuten dauert.
Minimieren Sie einzeilige Operationen mit mehreren Zeilen wie UPDATE JOIN oder DELETE, indem Sie WHERE-Bereichsklauseln verwenden, um die Anzahl der berührten Zeilen zu minimieren. Diese Praxis kann die Abfrageleistung verbessern und Sperren reduzieren.
Verwenden Sie Verbindungspooling auf der Anwendungsseite. Durch Pooling werden Verbindungen wiederverwendet, so dass die Anzahl der Verbindungen nicht überschritten wird. Stellen Sie sicher, dass die Größe Ihres Pools deutlich unter der Datenbank max_connections liegt. Implementieren Sie eine Wiederholungslogik und fangen Sie Ausnahmen ab, um mit der Erschöpfung des Pools oder mit Verbindungsfehlern umzugehen.
Reduzieren Sie den Sprengradius durch die Verwendung einer dedizierten ICD-MySQL pro Produktionsanwendung. Die Trennung von Anwendungen senkt das Volumen pro Serviceinstanz und minimiert Probleme, die durch die Bündelung der Nachfrage aus vielen Anwendungen entstehen.
Stellen Sie eine MySQL pro MySQL bereit. Read Replicas bieten die Möglichkeit, den Leseverkehr von der Hauptinstanz zu unterstützen, wodurch die Gesamtarbeitslast verringert und die Zuverlässigkeit erhöht wird.
MySQL-Hosting auf einer dedizierten Instanz Für Produktionsumgebungen, insbesondere solche, die Wachstum, erhöhten Datenverkehr erwarten oder hohe Zuverlässigkeit und Leistung erfordern, empfehlen wir dringend, MySQL auf einer dedizierten Instanz zu hosten. Dies gewährleistet eine bessere Ressourcenisolierung, Skalierbarkeit und allgemeine Systemstabilität.