Spôsoby platby Abuse

Ошибка 2006: MySQL server odišiel

09.03.2021, 22:01

Chyba 2006 s názvom MySQL Sever odišla znamená, že sa server odmietol pripojiť, hoci je spustený. Sú známe len tri dôvody, prečo sa táto chyba objavuje. Prvým dôvodom je, že server je preťažený. Vypršal čas čakania. Druhý dôvod - klient odoslal príliš bolestivý paket. Tretím dôvodom je, že server nebol úplne inicializovaný. Ďalej sa budeme podrobne zaoberať tým, z akých dôvodov sa chyba objavuje a ako ju riešiť.

Ako chybu odstrániť

Chyba sa zvyčajne objavuje pri pokuse o pripojenie k databáze pomocou jazyka PHP, konzolového klienta alebo v prípade použitia programu PhpMyAdmin:

PhpMyAdmin

Poďme ďalej preskúmať každú situáciu zvlášť.

Vypršal časový limit

Ako bolo spomenuté na začiatku tohto článku, jednou z možných príčin je uplynutý čakací čas. Môže sa stať, že server bol preťažený a nezvláda záťaž - spracovanie všetkých spojení. Ak chcete pochopiť, ako dlho trvajú požiadavky servera, môžete použiť ľubovoľného konzolového klienta a pripojiť sa k serveru. Ak sa vám to podarí, vykonajte ľubovoľnú požiadavku. Ak spracovanie požiadaviek trvá príliš dlho, môžete optimalizovať MySQL pomocou špeciálneho skriptu MySQLTuner. Zvyčajne zvýšte veľkosť poolu motora InnoDB nastavením parametra innodb_buffer_pool_size. Optimálnu hodnotu určíte pomocou uvedeného skriptu.

Ak je to 800 megabajtov (môže to byť akákoľvek iná veľkosť), nastavte ju:

$ sudo vi /etc/mysql/my.cnf
innodb_buffer_pool_size=800M

https://pq.hosting/help/myfiles/mysqlhasgoneavay-991x576.png

Existuje aj iný spôsob riešenia problému. Na tento účel sa zvýši čas odozvy zo servera. Na vykonanie tejto úlohy je potrebné zmeniť parameter wait_timeout. Ide o čas v sekundách, počas ktorého by ste mali čakať na odpoveď zo servera.

Napríklad:

wait_timeout=500

параметр wait_timeout

Pri vykonávaní zmien nezabudnite na ďalší reštart servera:

$ sudo systemctl restart mysql

Alebo:

$ sudo systemctl restart mariadb

Príliš veľký balík

Keď klient používateľa vytvorí príliš veľa paketov, server vygeneruje túto chybu. Dostupnú veľkosť paketu (maximálnu hodnotu) možno zvýšiť pomocou parametra max_allowed_packet.

Napríklad:

$ sudo vi /etc/mysql/my.cnf
max_allowed_packet=128M

Venujte osobitnú pozornosť klientovi, pretože ak posiela veľa požiadaviek, zrejme robíte niečo zle. Prinajmenšom negenerujte dopyty do MySQL pomocou for cyklov.

Server je nesprávne inicializovaný

Ak sa rozhodnete nasadiť MySQL alebo MariaDB v aplikácii Docker, pripravte sa na to, že sa s podobnou chybou môžete stretnúť. Počiatočná inicializácia kontajnera si vyžaduje trochu viac voľného času. Ak nenecháte kontajner dokončiť inicializáciu tak, že ho najprv zastavíte a spustíte, databáza vždy vráti túto chybu. Riešením je úplné odstránenie údajov kontajnera z databázy.

To sa vykoná takto:

$ docker-compose down

alebo:

$ docker rm mysql-container

Ďalej je potrebné odstrániť úložisko (zväzok) s nesprávne inicializovanou databázou. Na začiatku si však prezrite zoznam všetkých úložísk:

$ docker volume ls

СЕРВЕР НЕВЕРНО ПРОИНИЦИАЛИЗИРОВАН

Po vymazaní:

$ docker volume rm volume_name

Teraz môžete začať inicializovať aplikáciu, stačí počkať, kým vám databázový server oznámi, že je pripravený a môžete sa k nemu pripojiť.