Makseviisid Abuse

Ошибка 2006: MySQL Server on kadunud

09.03.2021, 22:01

Viga 2006 nimega MySQL Sever on kadunud tähendab, et server on keeldunud ühendust võtmast, kuigi see töötab. On ainult kolm teadaolevat põhjust, miks see viga ilmub. Esimene põhjus on see, et server on ülekoormatud. Ooteaeg on lõppenud. Teine põhjus - klient on saatnud liiga valusa paketi. Kolmas põhjus on see, et server ei ole täielikult initsialiseeritud. Edasi vaatleme üksikasjalikult, mis põhjustel viga ilmneb ja kuidas sellega toime tulla.

Kuidas viga parandada

Tavaliselt ilmneb viga siis, kui üritatakse andmebaasiga ühendust luua PHP, konsoolikliendi või PhpMyAdmin'i kasutamise korral:

PhpMyAdmin

Uurime edaspidi iga olukorda eraldi.

Aegunud aegumistähtaeg

Nagu artikli alguses mainitud, on üks võimalikest põhjustest aegunud ooteaeg. Võib olla, et server oli ülekoormatud ja ei saa koormusega hakkama - kõigi ühenduste töötlemine. Selleks, et mõista, kui kaua serveripäringud kestavad, võite kasutada mis tahes konsooliklienti ja luua serveriga ühenduse. Kui teil on võimalik seda teha, täitke mis tahes päring. Kui päringute töötlemine võtab liiga palju aega, saate MySQL-i optimeerida spetsiaalse skripti MySQLTuner abil. Tavaliselt suurendage InnoDB mootori reservi suurust, seades parameetri innodb_buffer_pool_size. Optimaalne väärtus määratakse ülaltoodud skripti abil.

Kui see on 800 megabaiti (see võib olla ka mõni muu suurus), siis seadke see:

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

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

Probleemi lahendamiseks on veel üks võimalus. Selleks suurendatakse serveri reageerimisaega. Selle ülesande täitmiseks tuleb muuta parameetrit wait_timeout. See on aeg sekundites, mille jooksul peaksite ootama serverilt vastust.

Näiteks:

wait_timeout=500

параметр wait_timeout

Muudatuste tegemisel ärge unustage järgmisena serveri taaskäivitamist:

$ sudo systemctl restart mysql

Või:

$ sudo systemctl restart mariadb

Liiga suur pakett

Kui kasutaja klient loob liiga palju pakette, genereerib server selle vea. Lubatud paketi suurust (maksimaalset väärtust) saab suurendada, kasutades parameetrit max_allowed_packet.

Näiteks:

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

Pöörake kliendile erilist tähelepanu, sest kui ta saadab palju päringuid, siis teete ilmselgelt midagi valesti. Vähemalt ärge genereerige päringuid MySQL-ile, kasutades for-silmuseid.

Server on valesti initsialiseeritud

Kui otsustate MySQL-i või MariaDB-d Dockeris kasutusele võtta, olge valmis sarnase veaga kokku puutuma. Konteineri initsialiseerimine nõuab veidi rohkem vaba aega. Kui te ei lase konteineril lõpule viia initsialiseerimist, peatades ja käivitades selle kõigepealt, annab andmebaas alati selle vea tagasi. Lahendus on konteineri andmete täielik eemaldamine andmebaasist.

Seda tehakse järgmiselt:

$ docker-compose down

või:

$ docker rm mysql-container

Seejärel tuleb kustutada salvestusruum (volume), kus on valesti initsialiseeritud andmebaas. Aga alguses vaadake läbi kõigi salvestiste nimekiri:

$ docker volume ls

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

Pärast kustutamist:

$ docker volume rm volume_name

Nüüd võite alustada rakenduse initsialiseerimist, lihtsalt oodake, kuni andmebaasiserver ütleb teile, et ta on valmis ja te saate temaga ühendust võtta.