sql >> Databáze >  >> RDS >> Mysql

Kontrola a optimalizace databáze MySQL automaticky pomocí Crontab/Cron

MySQL je velmi populární bezplatný, ale výkonný databázový systém. Ale i ve skvělých databázích se mohou tabulky fragmentovat s režií kvůli neustálé aktualizaci nebo operacím mazání a vkládání dat uložených v databázi. Kromě toho je také možné, že se databáze mohou poškodit. Proto je důležité pravidelně provádět kontrolu stavu databáze a optimalizovat MySQL server.

Je to trochu problematické, pokud se správci databází musí přihlásit k serveru nebo spustit phpMyAdmin, aby optimalizovali databáze jednu po druhé nebo tabulku po tabulce ručně. Někdy může správce DB jednoduše zapomenout udělat práci nebo nastavit frekvenci optimalizace na kratší časy. Doporučuje se, aby byly všechny tabulky v databázích MySQL kontrolovány alespoň jednou denně na vytíženém serveru.

Je možné automatizovat optimalizaci procesu MySQL pomocí funkce crontab v Linux/Unix/CentOS/FreeBSD. Úlohu cron pro kontrolu a optimalizaci databází MySQL lze vytvořit pomocí klientského nástroje mysqlcheck, který je součástí instalace MySQL. klient mysqlcheck může kontrolovat, opravovat, optimalizovat a analyzovat tabulky v databázi MySQL.

Chcete-li vytvořit novou úlohu cron, přihlaste se k serveru jako uživatel root nebo jakýkoli jiný uživatel a poté upravte soubor crontab (ve většině operačních systémů crontab -e otevře soubor crontab ve výchozím textovém editoru) a přidejte následující řádek textu. Pro uživatele používající cPanel klikněte na „Cron job“, kde můžete nastavit crontab v denních, hodinových a jiných intervalech. Zkušení webmasteři mohou také nastavit soubor crontab v adresáři rc.hourly nebo rc.daily nebo v jiném adresáři cron. Všimněte si, že pokud se přihlásíte jako MySQL nebo normální uživatel bez přístupových práv ke všem databázím, není možné optimalizovat všechny databáze, pokud není specifikováno uživatelské ID a heslo pro root jako v příkladu níže.

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

Výše uvedený příkaz má syntaxi podobnou „mysqlcheck [options] –all-databases“, kde parametr –all-databases je výchozí akcí, není zadána žádná databáze, lze jej tedy vynechat. Příkaz spustí klienta mysqlcheck pro automatickou analýzu a optimalizaci všech databází každý den v 1:00. Všimněte si, že mezi -p a vaším heslem pro root není mezera. Dobu běhu můžete změnit podle svých preferencí a také změnit možnosti příkazu mysqlcheck. Pokud chcete pouze zkontrolovat a optimalizovat určité databáze nebo určité tabulky bez databáze, použijte následující syntaxi:

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

Možná budete chtít odstranit přepínač –auto-repair z výše uvedeného příkazu, protože operace opravy tabulky může za určitých okolností způsobit ztrátu dat, přičemž příčiny zahrnují, ale nejsou omezeny na chyby souborového systému. Pro ty, kteří změnili znakovou sadu a řazení databází MySQL, může být také nutné použít volbu –default-character-set. Více informací o všech dostupných přepínačích a dostupných možnostech naleznete zde.


  1. Jak mohu vybrat ze seznamu hodnot v SQL Server

  2. Jak ovládat selhání replikace pro MySQL a MariaDB

  3. Volání členské funkce execute() na boolean in

  4. Vybrat / vložit verzi Upsert:existuje návrhový vzor pro vysokou souběžnost?