Úvod
Zbytečné procesy MySQL mohou způsobit problémy s výkonem ve vašem systému. V průběhu času se aktivní vlákna hromadí a zastavují váš server, což uživatelům brání v přístupu k tabulkám a provádění požadavků.
Když je využití zdrojů extrémně vysoké, možná budete muset zabít procesy MySQL. Tato příručka vám ukáže, jak identifikovat procesy MySQL a ukončit proces.
Předpoklady
- Přístup k příkazovému řádku/oknu terminálu
- Nainstalováno MySQL nebo MariaDB
- Uživatel s sudo nebo root privilegia
Jak najít seznam procesů MySQL
Než budete moci najít proces a zabít jej, musíte se přihlásit k místnímu nebo vzdálenému serveru MySQL. Chcete-li se přihlásit ke svému místnímu účtu MySQL jako root, otevřete terminál a zadejte:
mysql -u root -p
Po zobrazení výzvy zadejte heslo. Když se načte shell MySQL, výzva zobrazí mysql>
.
Chcete-li najít proces, který chcete ukončit nebo ukončit, načtěte seznam se všemi aktivními relacemi.
V prostředí MySQL použijte tento dotaz:
SHOW PROCESSLIST;
Výstup zobrazuje následující informace:
V seznamu můžete mít více položek. Poznamenejte si Id
procesu, který chcete zabít. Time
vám pomůže určit nejdéle běžící procesy. To jsou obvykle ty, které chcete ukončit jako první.
Jak zabít proces MySQL
Chcete-li ukončit relaci MySQL ze seznamu, použijte KILL
dotaz následovaný Id
vlákna jste si všimli dříve.
KILL 14;
Shell zobrazuje stav dotazu a počet ovlivněných řádků:„Dotaz je v pořádku, 0 ovlivněných řádků (0,06 s) .“ Tento dotaz ukončí připojení k databázi, včetně všech operací spojených s připojením.
Pamatujte, že uživatel musí mít správná oprávnění, aby mohl proces ukončit.
Jak zabít všechny procesy MySQL pro konkrétního uživatele
MySQL nemá jedinečný příkaz pro ukončení všech procesů.
Chcete-li ukončit všechny procesy pro konkrétního uživatele, použijte CONCAT
vytvořit soubor se seznamem vláken a příkazů. V našem případě jsme zadali root jako uživatel. Chcete-li určit jiného uživatele, nahraďte root s požadovaným uživatelským jménem.
SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user='root' INTO OUTFILE '/tmp/process_list.txt';
Tento dotaz vytvořil soubor s názvem process_list.txt . Název si můžete upravit podle svého. Otevřete soubor a zkontrolujte, zda se jedná o procesy, které chcete ukončit. Až budete připraveni, zadejte:
SOURCE /tmp/process_list.txt;
Do dotazu můžete přidat podmínky a zúžit tak seznam procesů ve výstupním souboru. Přidejte například time > 1000
do příkazu zahrnout pouze procesy s hodnotou času vyšší než 1000.
SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user='root' and time>1000 INTO OUTFILE '/tmp/process_list.txt';