Zwarte Vrijdag. WordPress + WooCommerce op een VPS. De startpagina laadt in twaalf seconden — niet vanwege viraal verkeer, maar vanwege een postmeta-tabel zonder indexen en een wisselende MySQL-schijf. Tegelijkertijd werd het automatisch opslaan nooit hersteld; De laatste dump was zes dagen geleden. De fundamenten hadden vóór de crisis moeten worden gelegd, en niet na de post-mortem.
MySQL op een dynamische site wordt niet “geïnstalleerd door de host en daarom gereguleerd”. Dit is het transactionele hart van uw omzet: catalogus, bestellingen, klantaccounts. Vier pijlers houden de productie op peil: een gezonde engine, beperkte accounts, geïndexeerde zoekopdrachten, bewezen back-ups.
Maak de motor en karakterset schoon
Begin met het controleren van wat uw applicatie daadwerkelijk gebruikt:
- InnoDB verplicht voor bedrijfstabellen — transacties, crashherstel, externe sleutels.
- utf8mb4 voor emoji's en alle Unicode-tekens; niet de oude
utf8ingekort tot drie bytes. - Consistente sortering voor alle tabellen — vermijdt langzame impliciete joins.
Controleer de oude tabellen:
TOON TABELSTATUS WAAR Engine != 'InnoDB';
Converteer MyISAM vóór de volgende stroomstoring – niet de dag dat een storing een tabel corrumpeert zonder transactielogboek.
Accounts en aanvalsoppervlak
Een enkele root-gebruiker in het .env-bestand van WordPress of Laravel is een veel voorkomende slechte gewoonte:
| Rekening | Rechten | Gebruik |
|---|---|---|
app_gebruiker | CRUD alleen op app_db | PHP, WordPress, applicatie |
back-up_gebruiker | SELECT + LOCK of dumptool | Back-up cron |
wortel | ALLE | Lokaal menselijk bestuur, niet in .env |
Geen gebruiker % toegankelijk via internet. Koppel MySQL indien mogelijk aan localhost of een privénetwerk — zie VPS firewall. Een gecompromitteerd applicatieaccount zou niet in staat moeten zijn om 'DATABASE TE DROPEN'.
Prestaties vóór hardware
Voordat u de server upgradet, moet u het volgende meten:
- Langzaam querylogboek ingeschakeld met drempelwaarde van 1-2 seconden; analyseer elke week.
- Index voor WHERE- en JOIN-clausulekolommen — geen index voor alle kolommen.
- InnoDB-bufferpool op ongeveer 70% van het toegewezen MySQL RAM op een VPS met alleen databases.
- Querycache — verouderd onder MySQL 8; Probeer het niet opnieuw te activeren.
Activeer in WordPress een objectcache (Redis) na het opschonen van de SQL – niet ervoor. Een cache die een zoekopdracht twaalf seconden verbergt, stelt het probleem uit, maar lost het niet op.
Bewezen back-ups en herstel
Een back-up die nog nooit is getest, is geen back-up:
- mysqldump dagelijks gecodeerd offsite + binlog als herstel op een bepaald tijdstip vereist is.
- Snapshot schijf als MySQL lokaal op de VPS draait.
- Restauratietest elk kwartaal — zie een restauratie testen.
- Documenteer de MySQL-versie van de dump versus het hersteldoel.
In gedeeld gaan exports via het paneel of een cron als SSH beschikbaar is - controleer de maximale grootte en uitsluitingen. Vergelijk de aanbiedingen met beheerde MySQL via de overzicht en de vergelijker als hoge beschikbaarheid een probleem wordt.
Replicatie en hoge beschikbaarheid — alleen als dat nodig is
Een alleen-lezen replica voor rapportage: handig. Automatische failover: aanzienlijke operationele complexiteit – vaak beheerd MySQL is rationeler. Repliceer niet om er professioneel uit te zien zonder een getest failover-runbook.
Evalueer tijdens een herontwerp van de stapel ook Postgres managed — de migratie is de moeite waard als uw team de gelegenheid aangrijpt om het schema te heroverwegen.
De top: de basis blijft bestaan tot de eerste echte piek
Dit is wat de lokale ontwikkeling niet onthult.
Vraag ze vóór de campagne, migratie of verkoop – niet na de eerste accidentele DROP.
Beslis en ga vooruit zonder blinde vlek
In één dag kunt u de basis leggen:
- Audit MySQL-engine, tekenset en accounts — converteer MyISAM, verwijder root uit
.env. - Schakel het langzame querylogboek in en repareer de drie langzaamste query's.
- Automatiseer dagelijks een gecodeerde back-up en plan een driemaandelijks testherstel.
- Isoleer MySQL naar localhost of particulier netwerk – sluit directe internettoegang af.
- Vergelijk MySQL en MySQL-hosts die worden beheerd via de overzicht als de belasting of compliance dit vereist.
Voor het algemene raamwerk van back-ups gaat u naar backup strategy zodra de automatische dump actief is.
Veelgestelde vragen
MijnISAM nog steeds acceptabel in 2026?
Nee voor zakelijke gegevens. InnoDB overal: transacties, crashherstel, externe sleutels. Converteer verouderde tabellen vóór de volgende storing: MyISAM registreert geen transacties.
Slechts één MySQL-rootgebruiker voor de app?
Slechte praktijk. Maak op één basis een applicatieaccount aan met beperkte rechten (SELECT, INSERT, UPDATE, DELETE); reserveer root voor lokaal menselijk bestuur of via bastion.
Mysqldump of snapshot-back-up?
De twee vullen elkaar aan: draagbare logische dump plus snelle schijf-snapshot. Test het herstel: een dump die nooit is hersteld, is geen verzekering.
Wanneer moet u overstappen op beheerde MySQL?
Wanneer hoge beschikbaarheid, herstel op een bepaald tijdstip of beveiligingsupdates buiten uw macht liggen, of wanneer u hercast naar managed Postgres.
MySQL voor een dynamische site: dit is niet de weergegeven versie — het is InnoDB, beperkte accounts, indexen en bewezen herstel voordat de crisis je de woordenschat leert.
