Migration unserer Website auf die neue Plattform

Ich bin gerade dabei die Wordpress Installation von 4future (ein sogenanntes Multisite Network) auf unsere neue Plattform zu migrieren. Dabei hat sich herausgestellt dass die alte MySQL Datenbank über die Jahre über 7GB groß geworden ist mit 4662 Tabellen in der Datenbank.

Ich bin daher gerade dabei die Datenbank auszumisten und danach dann von MySQL auf unseren neuen Galera Cluster (MariaDB) zu migrieren. Dabei gibt es eine Herausforderung, dass beim zurück sichern der Datenbank sogenannte Deadlocks auftreten. D.h. dass sich verschiedene Transaktionen gegenseitig blockieren. Ich versuche die Herausforderung geade zu meistern :slight_smile:

3 „Gefällt mir“

Ich habe die Datenbank jetzt bereinigt. Wir sind von 7GB jetzt auf 1,8GB heruntergekommen. In der Datenbank sind 4662 Tabellen. Jedes Plugin, dass jemals jemand auf der Webiste aktiviert hat, bringt Tabellen mit. Die meisten davon werden nicht gelöscht, wenn ein Plugin gelöscht wird, und bleiben daher in der Datenbank erhalten.

Ich habe jetzt versucht alle Tabellen zu erkennen, die nicht mehr von Plugins genutzt werden und nur diese zu migrieren, die noch benötigt werden.

Logeinträge von diversen Plugins habe ich gelöscht. Ein besonderes Exemplar war die Firewall AIOS (All In One Security) - die hatte über 1 Mio Logeinträge und keinen davon gelöscht. Laut Doku kann man einstellen dass die Einträge automatisch gelöscht werden - allerdings nur über einen Eintrag in der wp-config.php

define(‚AIOWPSEC_PURGE_AUDIT_LOGS_AFTER_DAYS‘, 7);

1 „Gefällt mir“

Nächstes Problem ist die Migration von MySQL (gehört jetzt Oracle) zur kompatiblen MariaDB und unserem Galera Cluster. Durch die schiere Größe der Datenbank und teilweise sehr großen Transaktionen gestaltet sich die Migration sehr mühsam. Ein offenes Problem ist, dass die Datenbank beim restore deadlocks erzeugt.

Eigentlich ist das - wenn eine Datenbank nur 1 Prozess hat, der schreibt und die Daten seriell eingespielt werden gar nicht möglich. Ich habe auch alle Clusternodes bis auf einen gestoppt, damit auch die Replikation auf die Cluster das Problem nicht verursachen können. Bisher habe ich keine Lösung gefunden, außer dass ich die Tabellen, die die Probleme verursacht haben lösche bevor sie eingespielt werden. Da es sich immer um Tabellen von Plugins gehandelt hat, die Indizes (wieder herstellbar) oder Logdateien (brauchen wir nicht mehr) sind - konnte das Problem umgangen werden.

Ein weiteres Problem ist beim Import passiert. MariaDB (utf8mb4_unicode_ci) unterstützt ein anderes Multibyte Character Set als MySQL ( utf8mb4_0900_ai_ci). Zusätzlich wurde vermutlich der Export aus dem Windows Server nicht korrekt durchgeführt dadurch ist ein doppeltes Encoding der Zeichen entstanden. Aktuell wird der Prozess wiederholt.

1 „Gefällt mir“

Die Webseite ist gefühlt deutlich schneller, danke!

Die Plattform ist Pfeilschnell. Das Poblem ist Wordpress + Plugins + Mist in der Datenbank.