Mysql
 sql >> Database >  >> RDS >> Mysql

Controlla e ottimizza automaticamente il database MySQL con Crontab/Cron

MySQL è un sistema di database gratuito ma potente molto popolare. Ma anche in grandi database, le tabelle possono essere frammentate con sovraccarico a causa dell'aggiornamento continuo o eliminare e inserire operazioni sui dati archiviati nel database. Inoltre, è anche possibile che i database vengano danneggiati. Pertanto, eseguire regolarmente il controllo dello stato del database e ottimizzare il server MySQL è un compito importante.

È un po' problematico se gli amministratori del database devono accedere al server o avviare phpMyAdmin per ottimizzare i database uno per uno o tabella per tabella manualmente. A volte l'amministratore DB potrebbe semplicemente dimenticare di fare il lavoro o impostare la frequenza di ottimizzazione su tempi inferiori. Si consiglia di controllare tutte le tabelle nei database MySQL almeno una volta al giorno su un server occupato.

È possibile automatizzare l'ottimizzazione del processo MySQL utilizzando la funzione crontab in Linux/Unix/CentOS/FreeBSD. Il lavoro cron per controllare e ottimizzare i database MySQL può essere creato utilizzando l'utilità client mysqlcheck che arriva all'installazione di MySQL. Il client mysqlcheck può controllare, riparare, ottimizzare e analizzare le tabelle nel database MySQL.

Per creare un nuovo processo cron, accedi al server come root o qualsiasi altro utente, quindi modifica il file crontab (nella maggior parte dei sistemi operativi, crontab -e aprirà il file crontab nell'editor di testo predefinito) da aggiungere nella seguente riga di testo. Per gli utenti che utilizzano cPanel, fare clic su "Cron job" dove è possibile impostare crontab a intervalli giornalieri, orari e altri. I webmaster di esperienza possono anche impostare un file crontab in rc.hourly o rc.daily o in un'altra directory cron. Nota che se accedi come MySQL o come utente normale senza privilegi di accesso a tutti i database, non è possibile ottimizzare tutti i database, a meno che l'ID utente e la password per root non siano specificati come nell'esempio seguente.

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

L'istruzione precedente ha una sintassi simile a "mysqlcheck [opzioni] –all-databases", dove il parametro –all-databases è l'azione predefinita se non è specificato alcun database, quindi può essere omesso. Il comando eseguirà il client mysqlcheck per analizzare e ottimizzare automaticamente tutti i database all'01:00 di tutti i giorni. Nota che non c'è spazio tra -p e la tua password per root. Puoi modificare il tempo di esecuzione in base alle tue preferenze e anche modificare le opzioni per il comando mysqlcheck. Se desideri solo controllare e ottimizzare determinati database o determinate tabelle senza il database, utilizza la seguente sintassi:

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

Potresti voler rimuovere l'opzione –auto-repair dal comando precedente, poiché un'operazione di riparazione della tabella potrebbe causare la perdita di dati in alcune circostanze l'operazione dovuta a cause include, ma non si limita agli errori del filesystem. Per coloro che hanno modificato il set di caratteri e le regole di confronto dei database MySQL potrebbe anche essere necessario utilizzare l'opzione –default-character-set. Ulteriori informazioni su tutti gli interruttori e le opzioni disponibili sono disponibili qui.