Awọn imọran Wulo lati Ṣayan Awọn aṣiṣe Wọpọ ni MySQL


MySQL jẹ ṣiṣii ṣiṣi ibatan ṣiṣi ibatan ibatan orisun ṣiṣi orisun orisun (RDMS) ti Oracle. O ti kọja awọn ọdun ni yiyan aiyipada fun awọn ohun elo ti o da lori wẹẹbu ati pe o tun jẹ olokiki ni lafiwe si awọn ẹrọ itanna data miiran.

Ti ṣe apẹrẹ MySQL ati iṣapeye fun awọn ohun elo wẹẹbu - o jẹ apakan apakan ti awọn ohun elo orisun wẹẹbu pataki bii Facebook, Twitter, Wikipedia, YouTube, ati ọpọlọpọ awọn omiiran.

Njẹ aaye rẹ tabi ohun elo wẹẹbu ti agbara nipasẹ MySQL? Ninu nkan alaye yii, a yoo ṣalaye bawo ni a ṣe le ṣatunṣe awọn iṣoro ati awọn aṣiṣe ti o wọpọ ni olupin data MySQL. A yoo ṣe apejuwe bi a ṣe le pinnu awọn idi ti awọn iṣoro ati kini lati ṣe lati yanju wọn.

1. Ko le Sopọ si Server MySQL Agbegbe

Ọkan ninu alabara ti o wọpọ si awọn aṣiṣe asopọ asopọ olupin ni MySQL ni\"Aṣiṣe 2002 (HY000): Ko le sopọ si olupin MySQL agbegbe nipasẹ iho '/var/run/mysqld/mysqld.sock' (2)".

Aṣiṣe yii tọka pe ko si olupin MySQL (mysqld) ti n ṣiṣẹ lori eto agbalejo tabi pe o ti ṣalaye orukọ faili iho Unix ti ko tọ tabi ibudo TCP/IP nigbati o n gbiyanju lati sopọ si olupin naa.

Rii daju pe olupin n ṣiṣẹ nipa ṣayẹwo ilana kan ti a npè ni mysqld lori olupin olupin data rẹ nipa lilo aṣẹ grep papọ bi o ti han.

$ ps xa | grep mysqld | grep -v mysqld

Ti awọn ofin ti o loke ba fihan ko si iṣẹjade, lẹhinna olupin data ko ṣiṣẹ. Nitorina alabara ko le sopọ si rẹ. Lati bẹrẹ olupin naa, ṣiṣe aṣẹ systemctl atẹle.

$ sudo systemctl start mysql        #Debian/Ubuntu
$ sudo systemctl start mysqld       #RHEL/CentOS/Fedora

Lati ṣayẹwo ipo iṣẹ MySQL, lo aṣẹ atẹle.

$ sudo systemctl status mysql       #Debian/Ubuntu
$ sudo systemctl status mysqld      #RHEL/CentOS/Fedora

Lati iṣejade aṣẹ ti o wa loke, iṣẹ MySQL ti kuna. Ni iru ọran bẹẹ, o le gbiyanju lati tun bẹrẹ ki o ṣayẹwo ipo rẹ lẹẹkan si.

$ sudo systemctl restart mysql
$ sudo systemctl status mysql

Ni afikun, ti olupin ba n ṣiṣẹ bi o ti han nipasẹ aṣẹ atẹle, ṣugbọn o tun rii aṣiṣe ti o wa loke, o yẹ ki o tun rii daju pe ibudo TCP/IP ti ni idiwọ nipasẹ ogiriina kan tabi eyikeyi iṣẹ idena ibudo.

$ ps xa | grep mysqld | grep -v mysqld

Si aṣẹ netstat bi o ti han.

$ sudo netstat -tlpn | grep "mysql"

2. Ko le Sopọ si Server MySQL

Aṣiṣe asopọ miiran ti o wọpọ pade ni\"(2003) Ko le sopọ si olupin MySQL lori‘ olupin ’(10061)”, eyiti o tumọ si pe a ti kọ asopọ nẹtiwọọki naa.

Nibi, bẹrẹ nipasẹ ṣayẹwo pe olupin MySQL kan wa ti o nṣiṣẹ lori eto bi a ti han loke. Tun rii daju pe olupin naa ni awọn isopọ nẹtiwọọki ṣiṣẹ ati pe ibudo nẹtiwọọki ti o nlo lati sopọ jẹ eyiti o tunto lori olupin naa.

Awọn aṣiṣe miiran ti o wọpọ ti o le ba pade nigbati o ba gbiyanju lati sopọ si olupin MySQL ni:

ERROR 2003: Can't connect to MySQL server on 'host_name' (111)
ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)

Awọn aṣiṣe wọnyi tọka pe olupin le ṣiṣẹ, sibẹsibẹ, o n gbiyanju lati sopọ nipa lilo ibudo TCP/IP, paipu ti a npè ni, tabi faili iho Unix ti o yatọ si eyiti olupin naa n tẹtisi.

3. Wiwọle Awọn aṣiṣe Ti a Kọ ni MySQL

Ninu MySQL, a ṣalaye akọọlẹ olumulo ni awọn ofin orukọ olumulo ati olugba alabara tabi awọn ogun lati eyi ti olumulo le sopọ si olupin naa. Ni afikun, akọọlẹ kan le tun ni awọn iwe eri ijẹrisi gẹgẹbi ọrọ igbaniwọle kan.

Botilẹjẹpe ọpọlọpọ awọn idi ti awọn aṣiṣe\"A ko iwọle” ni o wa, ọkan ninu awọn idi ti o wọpọ ni ibatan si awọn akọọlẹ MySQL ti olupin n gba awọn eto alabara laaye lati lo nigbati o ba n sopọ. ibi ipamọ data.

MySQL ngbanilaaye fun awọn akọọlẹ ti o jẹ ki awọn olumulo alabara lati sopọ si olupin ati iraye si data ti iṣakoso nipasẹ olupin naa. Ni eleyi, ti o ba pade aṣiṣe ti a sẹ wiwọle, ṣayẹwo ti o ba gba iwe olumulo laaye lati sopọ si olupin nipasẹ eto alabara ti o nlo, ati boya o ṣee ṣe olugbalejo lati eyiti asopọ ti wa.

O le wo iru awọn anfaani ti akọọlẹ ti a fun ni nipasẹ ṣiṣe pipaṣẹ Show GRANTS bi a ti han.

> SHOW GRANTS FOR 'tecmint'@'localhost';

O le fun awọn anfani si olumulo kan pato lori ibi ipamọ data kan pato si adiresi ip latọna jijin nipa lilo awọn ofin wọnyi ni ikarahun MySQL.

> grant all privileges on *.test_db to 'tecmint'@'192.168.0.100';
> flush privileges;

Pẹlupẹlu, awọn aṣiṣe wiwọle sẹ tun le ja si awọn iṣoro pẹlu sisopọ si MySQL, tọka si awọn aṣiṣe ti a ṣalaye tẹlẹ.

4. Asopọ ti o sọnu si olupin MySQL

O le ba aṣiṣe yii pade nitori ọkan ninu awọn idi wọnyi: Asopọmọra nẹtiwọọki ti ko dara, akoko ipari asopọ tabi iṣoro pẹlu awọn iye BLOB ti o tobi ju max_allowed_packet lọ. Ni ọran ti iṣoro asopọ nẹtiwọọki kan, rii daju pe o ni asopọ nẹtiwọọki ti o dara julọ paapaa ti o ba n wọle si olupin data isakoṣo latọna jijin.

Ti o ba jẹ iṣoro akoko isinmi asopọ, pataki nigbati MySQL n gbiyanju lati lo asopọ ibẹrẹ si olupin, mu iye ti paramita connect_timeout pọ si. Ṣugbọn ti o ba jẹ pe awọn iye BLOB ti o tobi ju max_allowed_packet, o nilo lati ṣeto iye ti o ga julọ fun max_allowed_packet ninu faili iṣeto//etc/my.cnf rẹ labẹ [mysqld] tabi [client] apakan bi o ti han.

[mysqld]
connect_timeout=100
max_allowed_packet=500M

Ti faili iṣeto MySQL ko ba wọle fun ọ, lẹhinna o le ṣeto iye yii nipa lilo aṣẹ atẹle ni ikarahun MySQL.

> SET GLOBAL connect_timeout=100;
> SET GLOBAL max_allowed_packet=524288000;

5. Ọpọlọpọ Awọn isopọ MySQL

Ni ọran ti alabara MySQL ba ni aṣiṣe\"awọn isopọ pupọ", o tumọ si pe gbogbo awọn isopọ ti o wa ni lilo nipasẹ awọn alabara miiran Nọmba awọn isopọ (aiyipada jẹ 151) ni iṣakoso nipasẹ eto max_connections eto oniyipada; o le ṣe atunṣe iṣoro naa nipasẹ jijẹ iye rẹ lati gba awọn asopọ diẹ sii laaye ninu faili iṣeto//etc/my.cnf rẹ.

[mysqld]
max_connections=1000

6. Jade ti Memory MySQL

Ni ọran ti o ba ṣiṣe ibeere nipa lilo eto alabara MySQL ki o ba pade aṣiṣe ni ibeere, o tumọ si pe MySQL ko ni iranti ti o to lati tọju gbogbo abajade ibeere naa.

Igbesẹ akọkọ ni lati rii daju pe ibeere naa tọ, ti o ba jẹ bẹ, lẹhinna ṣe atẹle naa:

  • ti o ba nlo alabara MySQL taara, bẹrẹ pẹlu --yiyi yipada , lati mu awọn abajade ti o wa ni pamọ tabi
  • ti o ba nlo awakọ MyODBC, wiwo olumulo iṣeto ni iṣeto (UI) ni taabu to ti ni ilọsiwaju fun awọn asia. Ṣayẹwo “Mase ṣe kaṣe abajade”.

Ọpa nla miiran ni, Tuner MySQL - iwe afọwọkọ ti o wulo ti yoo sopọ si olupin MySQL ti n ṣiṣẹ ati fifun awọn imọran fun bi o ṣe le tunto fun iṣẹ giga.

$ sudo apt-get install mysqltuner     #Debian/Ubuntu
$ sudo yum install mysqltuner         #RHEL/CentOS/Fedora
$ mysqltuner

Fun imudarasi MySQL ati awọn imọran yiyi iṣẹ ṣiṣe, ka nkan wa: 15 iwulo Iṣẹ MySQL/MariaDB Ṣiṣe Tunṣe ati Awọn imọran Iṣapeye.

7. MySQL ntọju Crashing

Ti o ba baamu iṣoro yii, o yẹ ki o gbiyanju lati wa boya iṣoro naa ni pe olupin MySQL ku tabi boya alabara rẹ pẹlu ọrọ kan. Akiyesi pe ọpọlọpọ awọn ipadanu olupin ni o ṣẹlẹ nipasẹ awọn faili data ibajẹ tabi awọn faili atọka.

O le ṣayẹwo ipo olupin lati fi idi silẹ fun igba ti o ti n ṣiṣẹ ati ti n ṣiṣẹ.

$ sudo systemctl status mysql       #Debian/Ubuntu
$ sudo systemctl status mysqld      #RHEL/CentOS/Fedora

Ni omiiran, ṣiṣe aṣẹ mysqladmin atẹle lati wa akoko igbesoke ti olupin MySQL.

$ sudo mysqladmin version -p 

Awọn solusan miiran pẹlu ṣugbọn ko ni opin si diduro olupin MySQL ati ṣiṣe n ṣatunṣe aṣiṣe, lẹhinna bẹrẹ iṣẹ naa lẹẹkansii. O le gbiyanju lati ṣe ọran idanwo ti o le lo lati tun iṣoro naa ṣe. Ni afikun, ṣii window window afikun kan ati ṣiṣe aṣẹ atẹle lati han awọn iṣiro ilana MySQL lakoko ti o n ṣiṣe awọn ibeere miiran rẹ:

$ sudo mysqladmin -i 5 status
OR
$ sudo mysqladmin -i 5 -r status 

Botilẹjẹpe a ti wo diẹ ninu awọn iṣoro MySQL ti o wọpọ ati awọn aṣiṣe ati tun pese awọn ọna lati ṣe laasigbotitusita ati yanju wọn, ohun pataki julọ pẹlu iwadii aṣiṣe kan ni agbọye ohun ti o tumọ si (ni awọn ofin ti ohun ti n fa a).

Nitorinaa bawo ni o ṣe le pinnu eyi? Awọn aaye wọnyi yoo ṣe itọsọna fun ọ lori bi o ṣe le rii daju ohun ti o fa iṣoro gangan:

  1. Igbesẹ akọkọ ati pataki julọ ni lati wo inu awọn akọọlẹ MySQL eyiti o wa ni fipamọ ni itọsọna /var/log/mysql/. O le lo awọn ohun elo laini aṣẹ bii iru lati ka nipasẹ awọn faili log.
  2. Ti iṣẹ MySQL ba kuna lati bẹrẹ, ṣayẹwo ipo rẹ nipa lilo systemctl tabi lo iwe iroyin (pẹlu asia -xe ) labẹ eto lati ṣayẹwo iṣoro naa.
  3. O tun le ṣayẹwo faili faili eto bii /var/log/messages tabi irufẹ fun awọn idi fun iṣoro rẹ.
  4. Gbiyanju lilo awọn irinṣẹ bii htop lati ṣayẹwo iru eto wo ni o mu gbogbo Sipiyu tabi ti npa ẹrọ naa tabi lati ṣayẹwo boya o ti lọ kuro ni iranti, aaye disiki, awọn apejuwe faili, tabi diẹ ninu orisun pataki miiran.
  5. A ro pe iṣoro naa jẹ diẹ ninu ilana ṣiṣe, o le gbiyanju nigbagbogbo lati pa a (lilo pkill tabi pa iwulo ohun elo) ki MySQL ṣiṣẹ deede.
  6. Ṣebi pe olupin mysqld n fa awọn iṣoro, o le ṣiṣe aṣẹ: mysqladmin -u root ping tabi mysqladmin -u root processlist lati gba eyikeyi esi lati ọdọ rẹ.
  7. Ti iṣoro ba wa pẹlu eto alabara rẹ lakoko igbiyanju lati sopọ si olupin MySQL, ṣayẹwo idi ti ko fi ṣiṣẹ daradara, gbiyanju lati gba eyikeyi abajade lati ọdọ rẹ fun awọn idi laasigbotitusita.

O tun le fẹ lati ka wọnyi atẹle awọn nkan ti o ni ibatan MySQL:

  1. Kọ ẹkọ MySQL/MariaDB fun Awọn Ibẹrẹ - Apá 1
  2. Bii a ṣe le ṣe atẹle Awọn apoti isura data MySQL/MariaDB ni lilo Netdata lori CentOS 7
  3. Bii o ṣe le Gbe Gbogbo Awọn data data MySQL Lati Atijọ si Olupin Tuntun
  4. Mytop - Ohun elo Wulo fun Ṣiṣayẹwo Iṣẹ MySQL/MariaDB ni Linux
  5. 12 MySQL/MariaDB Aabo Awọn adaṣe to dara julọ fun Lainos

Fun alaye diẹ sii, kan si itọnisọna Itọkasi MySQL nipa Awọn iṣoro ati Awọn aṣiṣe wọpọ, o ṣe akojọpọ awọn iṣoro wọpọ ati awọn ifiranṣẹ aṣiṣe ti o le ba pade lakoko lilo MySQL, pẹlu awọn ti a ti sọrọ loke ati diẹ sii.