sql >> Database >  >> RDS >> Mysql

Controleer en optimaliseer MySQL-database automatisch met Crontab/Cron

MySQL is een zeer populair gratis maar krachtig databasesysteem. Maar zelfs in geweldige databases kunnen de tabellen gefragmenteerd raken met overhead als gevolg van continue updates, of verwijderen en invoegen van gegevens die zijn opgeslagen in de database. Daarnaast is het ook mogelijk dat de databases beschadigd raken. Het is dus een belangrijke taak om de statuscontrole van de database uit te voeren en de MySQL-server regelmatig te optimaliseren.

Het is een beetje lastig als de databasebeheerders moeten inloggen op de server of de phpMyAdmin moeten starten om de databases één voor één of tabel voor tabel handmatig te optimaliseren. Soms vergeet de DB-beheerder gewoon om het werk te doen of stelt hij de frequentie van optimalisatie in op kortere tijden. Het wordt aanbevolen dat alle tabellen in MySQL-databases minstens één keer per dag worden gecontroleerd op een drukke server.

Het is mogelijk om de optimalisatie van het MySQL-proces te automatiseren door de crontab-functie te gebruiken in Linux/Unix/CentOS/FreeBSD. De cron-taak om MySQL-databases te controleren en te optimaliseren kan worden gemaakt met behulp van het mysqlcheck-clienthulpprogramma bij de MySQL-installatie. mysqlcheck-client kan tabellen in de MySQL-database controleren, repareren, optimaliseren en analyseren.

Om een ​​nieuwe cron-taak te maken, logt u in op de server als root of een andere gebruiker en bewerkt u vervolgens het crontab-bestand (in de meeste besturingssystemen, crontab -e zal het crontab-bestand openen in de standaard teksteditor) om de volgende tekstregel toe te voegen. Voor gebruikers die cPanel gebruiken, klik op "Cron job" waar u crontab kunt instellen met dagelijkse, uurlijkse en andere intervallen. Ervaren webmasters kunnen ook een crontab-bestand opzetten in rc.hourly of rc.daily of een andere cron-directory. Merk op dat als u inlogt als een MySQL of een normale gebruiker zonder toegangsrechten tot alle databases, het niet mogelijk is om alle databases te optimaliseren, tenzij de gebruikers-ID en het wachtwoord voor root zijn gespecificeerd zoals in het onderstaande voorbeeld.

0 1 * * * mysqlcheck -Aao --auto-repair -u root -p[password] > /dev/null

De bovenstaande instructie heeft de syntaxis die lijkt op "mysqlcheck [opties] -all-databases", waarbij de parameter -all-databases de standaardactie is, er zijn geen databases gespecificeerd en kan dus worden weggelaten. De opdracht voert de mysqlcheck-client uit om elke dag om 1 uur 's nachts automatisch alle databases te analyseren en te optimaliseren. Merk op dat er geen spatie is tussen -p en je wachtwoord voor root. U kunt de looptijd naar uw voorkeur wijzigen en ook de opties voor de opdracht mysqlcheck wijzigen. Als u alleen bepaalde databases of bepaalde tabellen wilt controleren en optimaliseren zonder de database, gebruik dan de volgende syntaxis:

mysqlcheck [options] db_name [tables]
mysqlcheck [options] --databases DB1 [DB2 DB3...]

Mogelijk wilt u de -auto-repair-schakelaar van de bovenstaande opdracht verwijderen, omdat een tabelherstelbewerking onder bepaalde omstandigheden gegevensverlies kan veroorzaken, de bewerking als gevolg van oorzaken omvat, maar is niet beperkt tot, bestandssysteemfouten. Voor degenen die de tekenset en sortering van MySQL-databases hebben gewijzigd, moeten mogelijk ook de optie –default-character-set gebruiken. Meer informatie over alle beschikbare schakelaars en beschikbare opties vindt u hier.


  1. Vraag en aanbod matchen Uitdaging

  2. Hoe roep ik een Oracle-opgeslagen procedure aan vanuit een Excel VBA-script?

  3. Live migraties met MySQL-replicatie

  4. Generate_series in Postgres vanaf begin- en einddatum in een tabel