Kā noregulēt un optimizēt MySQL 8.0 veiktspēju uz CentOS 7 servera

Ievads

Pirms darba sākšanas jums ir jāsaprot faktori, kas ietekmē MySQL veiktspēju, lai jūs varētu iemācīties pareizi iestatīt un optimizēt MySQL serveri un iegūt pareizos rezultātus. Galvenie faktori ir:


  • Izgūstamo datu apjoms>
  • Pieejamie resursi, t.i., CPU, atmiņa (RAM)
  • Slodze, ko darbina MySQL serveris

Zemas MySQL servera veiktspējas cēloņi ir:

  • Slikta datu bāzes dizains
  • Aparatūras vājās vietas
  • Slikta kodēšana
  • Slikta indeksācija
  • Neefektīva konfigurācija

Šajā rakstā mēs parādām, kā pielāgot un optimizēt MySQL 8.0 veiktspēju CentOS 7 Linux VPS.

Priekšnoteikumi:

  • CentOS 7 VPS iestatīšana
  • Instalēts MySQL 8.0 serveris
  • Izveidots lietotājs ar sudo privilēģijām

Mysqltuner un tuning-primer instalēšana

Instalējiet mysqltuner

Mysqltuner ir augstas veiktspējas MySQL tuning Perl skripts, kas sniedz momentuzņēmumu par MySQL servera veselības stāvokli un sniedz īpašus ieteikumus, kā uzlabot, palielināt veiktspēju, stabilitāti un efektivitāti.

Palaidiet zemāk esošās komandas, lai instalētu mysqltuner

Vispirms instalējiet epel-release, jo mysqltuner pakotne atrodas epel-release krātuvē

$ sudo yum install -y epel-release

Pēc tam instalējiet mysqltuner

$ sudo yum install -y mysqltuner

Instalējiet tuning-primer

Tuning Primer ir apvalka skripts, kas iegūst informāciju no MySQL servera iekšējiem elementiem un sniedz ieteikumus par servera mainīgo pielāgošanu.

Palaidiet zemāk esošās komandas, lai instalētu tuning gruntējumu:

$ sudo yum install bc -y
$ git klons https://github.com/RootService/tuning-primer.git

Īpaša piezīme: Incase git nav instalēts, jūs to varat instalēt, izmantojot

$ sudo yum install git -y

Pāriet uz tuning-primer direktoriju un padariet tuning-primer skriptu izpildāmu šādi:

$ cd tuning-primer
$ sudo chmod + x tuning-primer.sh

MySQL servera iestatīšana un optimizēšana

MySQL servera iestatīšana tiek veikta MySQL konfigurācijas failā.

/etc/my.cnf

Palaist mysqltuner.

$ sudo mysqltuner

Pēc uzvednes ievadiet mysql lietotāju ar visām privilēģijām (mūsu gadījumā “sakne”) un paroli

[linuxuser @ centos7-hostadvice4 ~] $ sudo mysqltuner
Lūdzu, ievadiet MySQL administratīvo pieteikumvārdu: sakne
Lūdzu, ievadiet savu MySQL administratīvo paroli: >> MySQLTuner 1.6.0 – majors Hayden
>> Kļūdu ziņojumi, funkciju pieprasījumi un lejupielādes vietnē http://mysqltuner.com/
>> Papildu opcijām un izvades filtrēšanai izmantojiet “–help”
[-] Izlaistās versijas pārbaude attiecībā uz skriptu MySQLTuner
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
[!!] Pašlaik darbojas neatbalstīta MySQL versija 8.0.11
[OK] Darbojas ar 64 bitu arhitektūru

——– Uzglabāšanas motora statistika ——————————————-
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
[-] Statuss: + ARHĪVS + BLACKHOLE + CSV – FEDERATĪVA + InnoDB + MRG_MYISAM
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
[-] Dati InnoDB tabulās: 16K (tabulas: 1)
[Labi] Kopējais sadrumstaloto tabulu skaits: 0
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.

——– Drošības ieteikumi ——————————————-
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
[Labi] Visiem datu bāzes lietotājiem nav anonīma konta
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
KĻŪDA 1054 (42S22) 1. rindā: nezināma kolonna “parole” “kur klauzula”
[Labi] Visiem datu bāzes lietotājiem ir piešķirtas paroles
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
Kļūda 1064 (42000) 1. rindā: SQL sintakse ir kļūda; pārbaudiet rokasgrāmatu, kas atbilst jūsu MySQL servera versijai, lai iegūtu pareizo sintakse, ko izmantot blakus ‘(lietotājam) VAI CAST (parole kā binārā) = PASSWORD (augšējais (lietotājs)) vai CAST (parole kā B’ 1. rindā)
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
[!!] Nav pamata paroļu failu saraksts !
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
mysql: [Brīdinājums] Paroles lietošana komandrindas saskarnē var būt nedroša.
Neinicializētas vērtības izmantošana papildus (+) pie / bin / mysqltuner līnijas 1934, <>
2. rinda (# 1)
(W neinicializēts) Nedefinēta vērtība tika izmantota it kā tā jau būtu
definēts. Tas tika interpretēts kā a "" vai 0, bet varbūt tā bija kļūda.
Lai apspiestu šo brīdinājumu, piešķiriet mainīgajiem noteiktu vērtību.

Lai palīdzētu jums saprast, kas nebija noteikts, Perl mēģinās jums pateikt
nenoteiktā mainīgā nosaukums (ja tāds ir). Dažos gadījumos
to nevar izdarīt, tāpēc tajā ir arī norādīts, kādu darbību izmantojāt
nenoteikta vērtība collā. Tomēr ņemiet vērā, ka perl optimizē jūsu programmu
Palīdzība par brīdinājumā parādīto darbību var nebūt obligāta
burtiski jūsu programmā. Piemēram, "ka $ foo" parasti ir
optimizēts "ka " . $ foo, un brīdinājums attiecas uz
konkatenācijas (.) operators, kaut arī nav. iekšā
jūsu programma.

Neinicializētas vērtības izmantošana sadalījumā (/) pie / bin / mysqltuner līnijas 1934, <>
2. rinda (# 1)
Neinicializētas vērtības $ mystat izmantošana {"Qcache_lowmem_prunes"} ciparu ekvivalentā (==)
at / bin / mysqltuner line 1949, <> 2. rinda (# 1)

——– Veiktspējas metrika ————————————————-
[-] Uz augšu: 1 h 37m 3s (12 q [0,002 qps], 20 conn, TX: 20K, RX: 2K)
[-] lasa / raksta: 100% / 0%
[-] Binārā reģistrēšana ir iespējota (GTID MODE: OFF)
[-] Kopējais buferis: 168,0M globāli + 1,1M par pavedienu (maksimāli 151 pavedieni)
[Labi] Maksimālais sasniegtais atmiņas patēriņš: 169.1M (4.78% no instalētās operatīvās atmiņas)
[Labi] Maksimāli iespējamā atmiņas izmantošana: 341.4M (9.65% no instalētās operatīvās atmiņas)
[Labi] Lēni jautājumi: 0% (0/12)
[OK] Vislielākais pieejamo savienojumu izmantojums: 0% (1/151)
[!!] Pārtraukti savienojumi: 40.00% (8/20)
Neinicializētas vērtības izmantošana $ myvar {"query_cache_size"} ciparu lt (<) plkst
/ bin / mysqltuner līnija 2281, <> 2. rinda (# 1)
[!!] Vaicājuma kešatmiņa ir atspējota
[OK] Diskā izveidotas pagaidu tabulas: 0% (0 diskā / 2 kopā)
[Labi] Vītņu kešatmiņas trāpījumu līmenis: 95% (izveidoti 1/20 savienojumi)
[Labi] Tabulas kešatmiņas trāpījumu līmenis: 83% (atvērts 118 / atvērts 142)
[OK] Izmantotais atvērtā faila ierobežojums: 0% (2 / 10K)
[OK] Galda slēdzenes tiek iegūtas uzreiz: 100% (2 tūlītējas / 2 slēdzenes)
[Labi] Binlog kešatmiņas piekļuve: 0% (0 atmiņa / 0 kopā)

——– MyISAM metrika —————————————————–
[!!] Izmantotais atslēgas buferis: 18,2% (izmantots 1 miljons / 8 miljoni kešatmiņas)
[!!] Nevar aprēķināt MyISAM indeksa lielumu – atkārtoti palaidiet skriptu kā saknes lietotāju

——– InnoDB metrika —————————————————–
[-] InnoDB ir iespējots.
[Labi] InnoDB bufera baseins / datu lielums: 128,0M / 16,0K
[Labi] InnoDB bufera portfeļa gadījumi: 1
[!!] InnoDB izmantotais buferis: 11,08% (908 lietoti / 8192 kopā)
[Labi] InnoDB lasīšanas bufera efektivitāte: 94,07% (12243 hits / 13015 kopā)
[!!] InnoDB rakstīšanas bufera efektivitāte: 0.00% (0 hits / 1 kopā)
[Labi] InnoDB žurnāls gaida: 0.00% (0 gaida / 12 raksta)

——– AriaDB metrika —————————————————–
[-] AriaDB ir atspējots.

——– Replikācijas metrika ————————————————-
[-] Šim serverim nav replikācijas vergu (-u).
[-] Šis ir patstāvīgs serveris..

——– Ieteikumi —————————————————–
Vispārīgi ieteikumi:
MySQL sākās pēdējo 24 stundu laikā – ieteikumi var būt neprecīzi
Samaziniet vai likvidējiet neslēgtus savienojumus un tīkla problēmas
Mainīgie mainīgie:
query_cache_size (>= 8 miljoni)
[linuxuser @ centos7-hostadvice4 ~] $

Koncentrējieties uz pēdējo izvades daļu sadaļā “Ieteikumi” un pārbaudiet mainīgos lielumus, kas jāpalielina.

Izveidojiet mysql konfigurācijas faila dublējumu un rediģējiet faktisko konfigurācijas failu.

$ sudo cp /etc/my.cnf /etc/my.cnf.bak
$ sudo vim /etc/my.cnf

Pielāgojiet faila mainīgo atbilstoši ieteikumiem. Jūs varat komentēt noklusējuma mainīgo vērtības un palielināt mainīgo vērtības līdz divreiz lielākai noklusējuma vērtībai. Patiesībā var paiet dažas dienas, lai nākt klajā ar labākajām jūsu servera vērtībām.

Pēc izmaiņu veikšanas restartējiet mysql serveri.

$ sudo systemctl restartējiet mysql

Īpaša piezīme: ja neizdodas restartēt, dodieties atpakaļ un komentējiet jaunās vērtības un sāciet koriģēt pa vienam un skatiet, kurš mainīgais pielāgojums izraisa servera kļūmi.

Ja serveris veiksmīgi ielādējas atkārtoti, palaidiet mysqltuner un pārbaudiet, vai ir vēl kādi ieteikumi par mainīgo vērtību korekciju.

Veiciet līdzīgu procesu gruntēšanas iestatīšanai.

Palaist tuning gruntējumu

$ sudo tuning-primer
[linuxuser @ centos7-hostadvice4 tuning-primer] $ sudo ./tuning-primer.sh
— MYSQL PERFORMANCE TUNING PRIMER 2.0.1-r1 —
– Autors: Metjū Montgomerijs –
– Autors: Markus Kohlmeyer –

MySQL versija 8.0.11 x86_64

Laiks, kas pavadīts saitā = 0 dienas 0 stundas 2 minūtes 52 sek
Vid. qps = 0
Jautājumu kopskaits = 4
Savienotie pavedieni = 1

Brīdinājums: serveris nedarbojas vismaz 48 stundas.
Var nebūt droši izmantot šos ieteikumus

Lai uzzinātu vairāk informācijas par to, kā katrs no šiem
izpildlaika mainīgie ietekmē veiktspējas apmeklējumu:
http://dev.mysql.com/doc/refman/8.0/lv/server-system-variables.html
Apmeklējiet vietni http://www.mysql.com/products/enterprise/advisors.html
lai iegūtu informāciju par MySQL Uzņēmējdarbības uzraudzības un konsultāciju pakalpojumu

LĒNI JAUTĀJUMI
Lēnā vaicājumu žurnāls NAV iespējots.
Pašreizējais long_query_time = 10.000000 sek.
Jums ir 0 no 25, kas prasa vairāk nekā 10.000000 sek. lai pabeigtu
Jūsu long_query_time var būt par daudz, es parasti to iestatu zem 5 sekundēm.

BINĀRS ATJAUNINĀJUMA ŽURNĀLS
Binārais atjauninājumu žurnāls ir iespējots
Derīguma termiņš_logs_dienas nav iestatīts.
MySQL saglabās visu bināro žurnālu, līdz komandas RESET MASTER vai PURGE MASTER LOGS tiks palaistas manuāli
Iestatot expire_logs_days, varēsit automātiski noņemt vecos bināros žurnālus
Skatiet vietni http://dev.mysql.com/doc/refman/8.0/en/purge-master-logs.html

DARBINIEKU VEIDI
Pašreizējā thread_cache_size = 9
Pašreizējā diegu cache = 0
Pašreizējais threads_per_sec = 0
Vēsturiski threads_per_sec = 0
Jūsu thread_cache_size ir kārtībā

MAX savienojumi
Pašreizējie max_savienojumi = 151
Pašreizējie pavedieni ir savienoti = 1
Vēsturiski max_used_connections = 1
Izmantoto savienojumu skaits ir 0% no konfigurētā maksimālā.
Jūs izmantojat mazāk nekā 10% no jūsu konfigurētajiem max_savienojumiem.
Maksimālo savienojumu samazināšana varētu palīdzēt izvairīties no pārmērīgas atmiņas iedalīšanas
Skat "ATMIŅAS LIETOŠANA" sadaļu, lai pārliecinātos, ka nepiešķir pārāk daudz līdzekļu

INNODB STATUSS
Pašreizējā InnoDB indeksa telpa = 240 K
Pašreizējā InnoDB datu telpa = 2 M
Pašreizējais InnoDB bufera fonds bez maksas = 88%
Pašreizējais innodb_buffer_pool_size = 128 M
Atkarībā no tā, cik daudz vietas aizņem jūsu innodb indeksi, tas var būt drošs
palielināt šo vērtību līdz 2/3 no visas sistēmas atmiņas

ATMIŅAS LIETOŠANA
Maksimālā atmiņa, kas jebkad piešķirta: 153 miljoni
Konfigurēti maksimālie buferi vienā pavedienā: 178 M
Konfigurēti maksimālie globālie buferi: 152 miljoni
Konfigurēts maksimālais atmiņas ierobežojums: 330 M
Plus 16 M par katru izveidoto pagaidu tabulu
Fiziskā atmiņa: 3,45 G
Šķiet, ka maksimālais atmiņas limits ir pieļaujamo normu robežās

GALVENĀ BUFERIS
Neviena atslēga nelasa?!
Nopietni apsveriet iespēju izmantot dažus indeksus
Pašreizējā MyISAM indeksa telpa = 0 baiti
Pašreizējais key_buffer_size = 8 M
Taustiņu kešatmiņas nokavēšanas koeficients ir 1: 0
Atslēgas bufera brīvā attiecība = 81%
Jūsu atslēgas bufera_izmērs, šķiet, ir kārtībā

JAUTĀJUMU KARTE
Vaicājuma kešatmiņa tiek atbalstīta, bet nav iespējota
Varbūt jums vajadzētu iestatīt query_cache_size

SORT Operācijas
Pašreizējais sort_buffer_size = 256 K
Pašreizējais read_rnd_buffer_size = 256 K
Kārtošanas operācijas nav veiktas
Šķiet, ka kārtošanas buferis ir kārtībā

APVIENOJAS
Pašreizējais join_buffer_size = 260,00 K
Jums ir bijuši 3 jautājumi, kuros pievienošanās nevarēja pareizi izmantot indeksu
Jums vajadzētu iespējot "žurnāli-vaicājumi-nelieto-indeksi"
Pēc tam lēnajā vaicājumu žurnālā meklējiet neindeksētus savienojumus.

ATVĒRTU DOKUMENTU IEROBEŽOJUMS
Pašreizējie open_files_limit = 10000 faili
Open_files_limit parasti jāiestata vismaz 2x-3x
table_open_cache, ja izmantojat daudz MyISAM.
Jūsu open_files_limit vērtība, šķiet, ir laba

TABULAS KABEJA
Pašreizējā table_open_cache = 4000 tabulas
Pašreizējā table_definition_cache = 2000 tabulas
Jums kopā ir 136 galdi
Jums ir 165 atvērti galdi.
Table_open_cache vērtība, šķiet, ir laba

TEMP TABULAS
Pašreizējais max_heap_table_size = 16 M
Pašreizējais tmp_table_size = 16 M
No 95 temp tabulām 0% tika izveidoti diskā
Izveidoto disku tmp tabulu attiecība šķiet laba

TABULAS Skenēšana
Pašreizējais lasīšanas_bufera_lielums = 128 K
Pašreizējā tabulas skenēšanas attiecība = 793: 1
read_buffer_size šķiet labi

TABULAS bloķēšana
Pašreizējās bloķēšanas gaidīšanas koeficients = 0: 286
Jūsu galda bloķēšana, šķiet, ir laba

[linuxuser @ centos7-hostadvice4 tuning-primer] $

Īpaša piezīme: vairāk koncentrējieties uz izcelto sarkano un dzelteno tekstu, jo tas sniedz ieteikumus, kā optimizēt un uzlabot mysql veiktspēju. Visiem, kas noklusina, tacu

Pielāgojiet faila mainīgo atbilstoši ieteikumiem. Jūs varat komentēt noklusējuma mainīgo vērtības un pielāgot mainīgo vērtības, kā ieteikts ieteikumos. Visiem, kas noklusina, tacu

Pēc izmaiņu veikšanas restartējiet MySQL serveri.

$ sudo systemctl restartējiet mysql

Īpaša piezīme: ja neizdodas restartēt, dodieties atpakaļ un komentējiet jaunās vērtības un sāciet koriģēt pa vienam un skatiet, kurš mainīgais pielāgojums izraisa servera kļūmi.

Ja serveris veiksmīgi restartējas, palaidiet atkārtotu skaļruņa iestatījumu un pārbaudiet, vai ir vēl kādi ieteikumi par mainīgo vērtību korekciju.

Secinājums

Ir ļoti svarīgi atzīmēt, ka noregulēšanas rīki mysqltuner vai tuning-primer nav risinājums slikti darbinošam MySQL serverim, bet gan skripti, kas palīdzēs precīzi noregulēt MySQL serveri..

Par labāko sniegumu,

  • Veiciet rūpīgu pārskatu uz serverim nosūtītajiem jautājumiem un optimizējiet datu bāzes struktūru / noformējumu un SQL vaicājumu
  • Novērtējiet faktorus, kas ietekmē MySQL veiktspēju, kā paskaidrots ievadā.
  • Apsveriet fiziskā servera aparatūras jaunināšanu, lai nodrošinātu labāku veiktspēju, un optimizējiet MySQL konfigurācijas, pamatojoties uz aparatūras specifikācijām. Lai uzzinātu par labākajām MySQL mitināšanas iespējām, sazinieties ar HostAdvice.
  • Veiciet vairāk pētījumu par to, kā pielāgot MySQL konfigurācijas, pamatojoties uz lietojumprogrammām, kas izmanto MySQL serveri.

Pēc MySQL servera restartēšanas ir ļoti ieteicams regulāri palaist mysqltuner vai tuning-primer rīku ilgāk nekā 48 stundas, lai iegūtu jēgpilnu lietošanas statistiku..

Apskatiet šos top 3 MySQL mitināšanas pakalpojumus:

A2 mitināšana

Sākuma cena:
3,92 USD


Uzticamība
9.3


Cenu noteikšana
9.0


Lietotāju draudzīgs
9.3


Atbalsts
9.3


Iespējas
9.3

Lasīt atsauksmes

Apmeklējiet vietni A2 Hostings

FastComet

Sākuma cena:
2,95 USD


Uzticamība
9.7


Cenu noteikšana
9.5


Lietotāju draudzīgs
9.7


Atbalsts
9.7


Iespējas
9.6

Lasīt atsauksmes

Apmeklējiet vietni FastComet

Hostinger

Sākuma cena:
0,99 USD


Uzticamība
9.3


Cenu noteikšana
9.3


Lietotāju draudzīgs
9.4


Atbalsts
9.4


Iespējas
9.2

Lasīt atsauksmes

Apmeklējiet vietni Hostinger

Saistītie padomi

  • Kā noregulēt un optimizēt MySQL 5.7 veiktspēju Ubuntu 18.04 VPS vai speciālajā serverī
    eksperts
  • Kā instalēt phpMyAdmin uz CentOS 7 VPS vai Dedicated Server
    starpposms
  • Kā izveidot MySQL datu bāzes dublējumu Ubuntu 18.04 VPS vai speciālajā serverī
    starpposms
  • Kā instalēt MYSQL 8.0 un izveidot datu bāzi uz CentOS 7 Linux VPS vai Dedicated Server
    starpposms
  • Kā izveidot jaunus MySQL lietotāju kontus un pārvaldīt MySQL privilēģijas
    jauniņais
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me