Panimula

Bago namin simulan ay dapat mong maunawaan ang mga kadahilanan na nakakaapekto sa pagganap ng MySQL, upang matutunan mong i-tune at ma-optimize ang MySQL server sa tamang paraan at makakuha ng tamang mga resulta. Ang pangunahing mga kadahilanan ay kinabibilangan ng:


  • Dami ng data na nakuha
  • Mga magagamit na mapagkukunan i.e. CPU, Memory (RAM)
  • Mag-load ng run ng MySQL server>

Mga sanhi ng mahinang pagganap ng MySQL server ay kinabibilangan ng:

  • Mahina na disenyo ng database
  • Mga bottlenecks ng Hardware
  • Mahina coding
  • Mahina ang pag-index
  • Hindi maayos na pagsasaayos

Espesyal na Tandaan: tulad ng nakikita mo, ang ilan sa mga salik na ito ay maaaring matugunan sa pamamagitan ng pag-upgrade sa isang mas mahusay na serbisyo sa web hosting. Dinadala sa iyo ng HostAdvice ang pinakamahusay na MySQL hosting provider batay sa mga pagsusuri sa eksperto at gumagamit.

Ang pag-install ng mysqltuner at tuning-primer

I-install ang mysqltuner

Ang Mysqltuner ay isang mataas na pagganap na MySQL tuning Perl script na nagbibigay ng isang snapshot ng katayuan sa kalusugan ng MySQL server at nagbibigay ng mga tukoy na rekomendasyon para sa pinabuting, nadagdagan ang pagganap, katatagan at kahusayan.

Patakbuhin ang mga utos sa ibaba upang mai-install ang mysqltuner

$ cd / tmp
$ sudo wget https://raw.github.com/major/MySQLTuner-perl/master/mysqltuner.pl –quiet –no-check-certificate –output-dokumento = / usr / local / bin / mysqltuner
$ sudo chmod u + x / usr / lokal / bin / mysqltuner

I-install ang tuning-primer

Ang Pag-tune ng Primer ay isang script ng shell na nakakakuha ng impormasyon mula sa mga server ng MySQL server at gumagawa ng mga rekomendasyon sa mga pagsasaayos ng mga variable ng server.

Patakbuhin ang mga utos sa ibaba upang mai-install ang tuning primer:

$ sudo apt install ng bc -y
$ sudo wget http://www.day32.com/MySQL/tuning-primer.sh –output-dokumento = / usr / local / bin / tuning-primer
$ sudo chmod u + x / usr / lokal / bin / tuning-primer

Pag-tune at pag-optimize ng mysql server

Ang pag-tuning ng MySQL server ay ginagawa sa file ng pagsasaayos ng MySQL.

/etc/mysql/mysql.conf.d/mysqld.cnf

Patakbuhin ang mysqltuner.

$ sudo mysqltuner
$ sudo mysqltuner
>> MySQLTuner 1.7.9 – Pangunahing Hayden
>> Mga ulat ng bug, mga kahilingan sa tampok, at pag-download sa http://mysqltuner.com/
>> Patakbuhin ang ‘–help’ para sa karagdagang mga pagpipilian at pag-filter ng output

[-] Suriin ang bersyon ng pagsusuri para sa script ng MySQLTuner
[OK] Naka-log in gamit ang mga kredensyal mula sa account sa pagpapanatili ng debian.
[OK] Kasalukuyang tumatakbo suportado ang MySQL bersyon 5.7.22-0ubuntu18.04.1
[OK] Ang pagpapatakbo sa 64-bit na arkitektura

——– Mga rekomendang mag-log file ——————————————————————
[-] Mag-log file: /var/log/mysql/error.log(18K)
[OK] Ang file ng log /var/log/mysql/error.log ay umiiral
[OK] Ang file ng log /var/log/mysql/error.log ay mababasa.
[OK] Mag-log file /var/log/mysql/error.log ay walang laman
[OK] Ang file ng log /var/log/mysql/error.log ay mas maliit kaysa sa 32 Mb
[!!] /var/log/mysql/error.log ay naglalaman ng 14 (mga) babala.
[!!] /var/log/mysql/error.log ay naglalaman ng 3 error (s).
[-] 3 mga simula (s) nakita sa /var/log/mysql/error.log
[-] 1) 2018-06-06T17: 55: 47.928847Z 0 [Tandaan] / usr / sbin / mysqld: handa na para sa mga koneksyon.
[-] 2) 2018-06-06T17: 55: 44.798684Z 0 [Tandaan] mysqld: handa na para sa mga koneksyon.
[-] 3) 2018-06-06T17: 55: 41.931105Z 0 [Tandaan] mysqld: handa na para sa mga koneksyon.
[-] 2 pag-shutdown (s) nakita sa /var/log/mysql/error.log
[-] 1) 2018-06-06T17: 55: 46.410548Z 0 [Tandaan] mysqld: Kumpleto ang pag-shutdown
[-] 2) 2018-06-06T17: 55: 43.758366Z 0 [Tandaan] mysqld: Kumpleto ang pag-shutdown

——– Istatistika ng Pag-iimbak ng Engine —————————————————————–
[-] Katayuan: + ARCHIVE + BLACKHOLE + CSV -FEDERATED + InnoDB + MEMORY + MRG_MYISAM + MyISAM + PERFORMANCE_SCHEMA
[-] Data sa mga talahanayan ng InnoDB: 16K (Tables: 1)
[OK] Kabuuan ng mga fragment na talahanayan: 0

——– Mga Rekomendasyon sa Seguridad ——————————————————————
[OK] Walang mga anonymous account para sa anumang mga gumagamit ng database
[OK] Ang lahat ng mga gumagamit ng database ay nakatalaga sa mga password
[-] Bug # 80860 MySQL 5.7: Iwasan ang pagsubok ng password kapag validate_password ay isinaaktibo

——– Mga Rekomendasyon sa Seguridad ng CVE ————————————————————–
[-] Nilaktawan dahil sa –cvefile na pagpipilian na hindi natukoy

——– Pagganap ng Metrics ———————————————————————–
[-] Up para sa: 9m 8s (110 q [0.201 qps], 38 kumonekta, TX: 187K, RX: 10K)
[-] Mga Nagbebenta / Nagsusulat: 98% / 2%
[-] Hindi pinapagana ang Binary logging
[-] Physical Memory: 3.6G
[-] Max MySQL memorya: 352.4M
[-] Iba pang memorya ng proseso: 175.4M
[-] Kabuuan ng buffer: 192.0M global + 1.1M bawat thread (151 max na mga thread)
[-] P_S Max paggamit ng memorya: 72B
[-] Galera GCache Max paggamit ng memorya: 0B
[OK] Pinakamataas na naabot ang paggamit ng memorya: 194.1M (5.26% ng naka-install na RAM)
[OK] Pinakamataas na posibleng paggamit ng memorya: 352.4M (9.54% ng naka-install na RAM)
[OK] Pangkalahatang posibleng paggamit ng memorya sa iba pang proseso ay katugma sa magagamit na memorya
[OK] Mabagal na mga query: 0% (0/110)
[OK] Pinakamataas na paggamit ng magagamit na mga koneksyon: 1% (2/151)
[OK] Pinagsamang mga koneksyon: 0.00% (0/38)
Ang resolusyon ng pangalan ay aktibo: ang isang reverse resolution ng pangalan ay ginawa para sa bawat bagong koneksyon at maaaring mabawasan ang pagganap
[!!] Ang quache cache ay maaaring hindi pinagana ng default dahil sa pagtatalo ng mutex.
[!!] Ang kahusayan ng cache ng cache: 0.0% (pipili ng 0 cache / 49)
[OK] Mga prutas ng cache ng cache bawat araw: 0
[OK] Mga kinakailangang pansamantalang talahanayan: 0% (0 temp huru / 2 uri)
[OK] Walang sumali nang walang mga index
[OK] Pansamantalang mga talahanayan na nilikha sa disk: 4% (36 sa disk / 846 kabuuan)
[OK] Thread cache hit rate: 94% (2 nilikha / 38 na koneksyon)
[OK] Talaan ng rate ng cache ng talahanayan: 95% (591 bukas / 620 binuksan)
[OK] Ginagamit ang bukas na limitasyon ng file: 1% (50 / 5K)
[OK] Ang mga kandado ng talahanayan na nakuha kaagad: 100% (158 kaagad / 158 kandado)

——– Schema ng pagganap ————————————————————————
[-] memorya na ginamit ni P_S: 72B
[-] Ang Sys schema ay naka-install.

——– ThreadPool Metrics ————————————————————————
[-] Ang stat stat ng ThreadPool ay hindi pinagana.

——– MyISAM Metrics —————————————————————————-
[!!] Ginamit ang pangunahing buffer: 18.3% (3M ginamit / 16M cache)
[OK] Sukat ng buffer / kabuuang index ng MyISAM: 16.0M / 43.0K
[!!] Basahin ang rate ng pindutan ng buffer hit: 94.1% (118 na naka-cache / 7 ang nagbabasa)

——– Mga InnoDB Metrics —————————————————————————-
[-] Pinapagana ang InnoDB.
[-] InnoDB Thread Concurrency: 0
[OK] InnoDB File bawat talahanayan ay isinaaktibo
[OK] InnoDB buffer pool / data size: 128.0M / 16.0K
[!!] Ang laki ng file ng log ng InnoDB / laki ng pool ng InnoDB Buffer (75%): 48.0M * 2 / 128.0M ay dapat na pantay na 25%
[OK] Mga pagkakataong innoDB buffer pool: 1
[-] Bilang ng InnoDB Buffer Pool Chunk: 1 para sa 1 Buffer Pool Instance (s)
[OK] Innodb_buffer_pool_ ay nakahanay sa Innodb_buffer_pool_chunk_size & Innodb_buffer_pool_instances
[!!] InnoDB Basahin ang kahusayan ng buffer: 88.39% (1933 hit / 2187 kabuuang)
[!!] InnoDB Sumulat ng kahusayan ng Mag-log: 0% (5 mga hit / 0 kabuuang)
[OK] InnoDB log naghihintay: 0.00% (0 naghihintay / 5 nagsusulat)

——– AriaDB Metrics —————————————————————————-
[-] Ang AriaDB ay hindi pinagana.

——– TokuDB Metrics —————————————————————————-
[-] Ang TokuDB ay hindi pinagana.

——– XtraDB Metrics —————————————————————————-
[-] Ang XtraDB ay hindi pinagana.

——– Mga RocksDB Metrics —————————————————————————
[-] Ang RocksDB ay hindi pinagana.

——– Spider Metrics —————————————————————————-
[-] Hindi pinagana ang spider.

——– Ikonekta ang Metrics —————————————————————————
[-] Hindi pinagana ang pagkonekta.

——– Galera Metrics —————————————————————————-
[-] Galera ay hindi pinagana.

——– Mga Metrics ng pagtitiklop ———————————————————————–
[-] Galera Tumbas na pagtitiklop: HINDI
[-] Walang mga alipin ng pagtitiklop para sa server na ito.
[-] Binlog format: ROW
[-] Pinapagana ang suporta ng XA: ON
[-] Semi magkakasabay na pagtitiklop Master: Hindi Aktibo
[-] Semi magkakasabay na pagtitiklop Alipin: Hindi Aktibo
[-] Ito ay isang nakapag-iisang server

——– Mga rekomendasyon —————————————————————————
Pangkalahatang mga rekomendasyon:
Kontrol ang mga (mga) linya ng babala sa /var/log/mysql/error.log file
Kontrol ng mga linya ng error sa /var/log/mysql/error.log file
Sinimulan ang MySQL sa loob ng huling 24 na oras – maaaring hindi tumpak ang mga rekomendasyon
I-configure lamang ang iyong mga account sa ip o subnets lamang, pagkatapos ay i-update ang iyong pagsasaayos sa skip-name-resolusyon = 1
Bago baguhin ang innodb_log_file_size at / o innodb_log_files_in_group basahin ito: http://bit.ly/2wgkDvS
Mga variable upang ayusin:
query_cache_size (= 0)
query_cache_type (= 0)
query_cache_limit (> 1M, o gumamit ng mas maliit na mga set ng resulta)
Ang innodb_log_file_size ay dapat na (= 16M) kung posible, kaya ang kabuuang InnoDB na laki ng log file ay katumbas ng 25% ng laki ng buffer pool.

Tumutok sa huling bahagi ng output sa seksyon na “Mga Rekomendasyon” at suriin ang mga variable na kailangang madagdagan.

Lumikha ng isang backup ng mysql configuration file at i-edit ang aktwal na file ng pagsasaayos.

$ sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

Ayusin ang variable ng file ayon sa mga rekomendasyon. Maaari mong punain ang mga default na halaga ng variable at dagdagan ang variable na mga halaga sa dalawang beses sa default na halaga. Talaga, maaaring tumagal ng ilang araw upang makabuo ng mga pinakamahusay na halaga para sa iyong server.

Matapos gawin ang mga pagbabago, i-restart ang mysql server.

$ sudo systemctl i-restart ang mysql

Espesyal na Tandaan: Kung nabigo itong i-restart, bumalik at magkomento ng mga bagong halaga at simulang isaayos ang isa-isa at tingnan kung aling variable na pagsasaayos ang nagiging sanhi ng pagkabigo ng server

Kung matagumpay na i-reloads ang server, i-rerun ang mysqltuner at tingnan kung mayroong anumang higit pang mga rekomendasyon tungkol sa variable na mga pagsasaayos ng mga halaga.

Gawin ang katulad na proseso para sa pag-tune ng panimulang aklat.

Patakbuhin ang panimulang aklat

$ sudo tuning-primer
$ sudo tuning-primer

— MYSQL PERFORMANCE TUNING PRIMER —
– Ni: Matthew Montgomery –

MySQL Bersyon 5.7.22-0ubuntu18.04.1 x86_64

Uptime = 0 araw 0 hrs 1 min 49 sec
Avg. qps = 0
Kabuuang Mga Katanungan = 15
Nakakonekta ang Mga Thread = 1

Babala: Ang server ay hindi tumatakbo nang hindi bababa sa 48hrs.
Maaaring hindi ligtas na gamitin ang mga rekomendasyong ito

Upang malaman ang karagdagang impormasyon sa kung paano ang bawat isa sa mga ito
runtime variable variable effects ng pagbisita sa pagganap:
http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
Bisitahin ang http://www.mysql.com/products/enterprise/advisors.html
para sa impormasyon tungkol sa MySQL’s Enterprise Monitoring and Advisory Service

SLOW TANONG
Ang mabagal na query sa pag-log ay HINDI pinagana.
Kasalukuyang long_query_time = 10.000000 seg.
Mayroon kang 0 sa 36 na tumatagal ng mas mahaba kaysa sa 10.000000 seg. para makumpleto
Ang iyong long_query_time ay tila maayos

BINARY UPDATE LOG
Ang binary update log ay HINDI pinagana.
Hindi mo magagawang point sa pagbawi ng oras
Tingnan ang http://dev.mysql.com/doc/refman/5.7/en/point-in-time-recovery.html

TRABAHO NG TRABAHO
Kasalukuyang thread_cache_size = 8
Kasalukuyang mga thread_cached = 0
Kasalukuyang mga thread_per_sec = 0
Makasaysayang mga thread_per_sec = 0
Maayos ang iyong thread_cache_size

MAX CONNECTIONS
Kasalukuyang max_connections = 151
Kasalukuyang mga thread_connected = 1
Makasaysayang max_used_connections = 1
Ang bilang ng mga ginamit na koneksyon ay 0% ng maximum na na-configure.
Gumagamit ka ng mas mababa sa 10% ng iyong na-configure na max_connections.
Ang pagbaba ng max_connections ay makakatulong upang maiwasan ang labis na paglalaan ng memorya
Tingnan "PAGGAMIT NG MEMORY" seksyon upang matiyak na hindi ka over-allocating

Walang Pinapagana ang Suporta ng InnoDB!

PAGGAMIT NG MEMORY
Ang Max Memory Kailangang Inilalaan: 177 M
Nakumpirma ang Max Per-thread Buffers: 160 M
Nakumpirma na Max Global Buffers: 176 M
Na-configure ang Limitasyong Pag-memorya ng Max: 336 M
Physical Memory: 3.60 G
Ang limitasyong memorya ng memorya ay tila nasa loob ng mga katanggap-tanggap na kaugalian

KEY BUFFER
Kasalukuyang puwang ng index ng MyISAM = 43 K
Kasalukuyang key_buffer_size = 16 M
Ang pangunahing rate ng miss cache ay 1: 2
Key ratio ng pangunahing buffer = 81%
Mukhang maayos ang iyong key_buffer_size

TANONG CACHE
Pinapagana ang quache cache
Kasalukuyang query_cache_size = 16 M
Kasalukuyang query_cache_used = 16 K
Kasalukuyang query_cache_limit = 1 M
Kasalukuyang Query cache ng memorya ng memorya = .10%
Kasalukuyang query_cache_min_res_unit = 4 K
Mukhang masyadong mataas ang iyong query_cache_size.
Marahil maaari mong gamitin ang mga mapagkukunang ito sa ibang lugar
Ang MySQL ay hindi cache ang mga resulta ng query na mas malaki kaysa sa laki ng query_cache_limit sa laki

SISISYON NG SORTE
Kasalukuyang uri_buffer_size = 256 K
Kasalukuyang read_rnd_buffer_size = 256 K
Walang mga uri ng operasyon na isinagawa
Ang uri ng buffer ay tila maayos

SUMALI
Kasalukuyang sumali_buffer_size = 260.00 K
Mayroon kang 0 mga query kung saan ang isang sumali ay hindi maaaring gumamit ng isang index nang maayos
Ang iyong mga sumali ay tila gumagamit ng maayos na mga index

BUKSANG FILES LIMIT
Kasalukuyang open_files_limit = 5000 mga file
Ang open_files_limit ay dapat na karaniwang itakda sa hindi bababa sa 2x-3x
iyon ng table_cache kung mayroon kang mabibigat na paggamit ng MyISAM.
Mukhang maayos ang iyong open_files_limit na halaga

TABLE CACHE
Kasalukuyang talahanayan_open_cache = 2000 mga talahanayan
Kasalukuyang talahanayan_definition_cache = 1400 mga talahanayan
Mayroon kang isang kabuuang 119 talahanayan
Mayroon kang 249 bukas na mga talahanayan.
Ang halaga ng table_cache ay tila maayos

TEMP TABLES
Kasalukuyang max_heap_table_size = 16 M
Kasalukuyang tmp_table_size = 16 M
Sa 361 temp na talahanayan, 6% ang nilikha sa disk
Ang ratio ng nilikha na mga talahanayan ng disk ng tmp ay tila maayos

TABLE SCANS
Kasalukuyang read_buffer_size = 128 K
Kasalukuyang ratio ng pag-scan ng talahanayan = 673: 1
ang basahin_buffer_size ay tila maayos

TABLE LOCKING
Ranggo ng Kasalukuyang Lock Wait = 0: 219
Mukhang maayos ang iyong pag-lock sa mesa

Espesyal na Tandaan: Tumutuon ng higit sa pula at dilaw na naka-highlight na teksto dahil nagbibigay ito ng mga rekomendasyon sa kung paano i-optimize at mapabuti ang pagganap ng mysql.

Ayusin ang variable ng file ayon sa mga rekomendasyon. Maaari mong punain ang mga default na halaga ng variable at ayusin ang variable na mga halaga tulad ng iminungkahing sa mga rekomendasyon.

Matapos gawin ang mga pagbabago, i-restart ang MySQL server.

$ sudo systemctl i-restart ang mysql

Espesyal na Tandaan: Kung nabigo itong i-restart, bumalik at magkomento ng mga bagong halaga at simulang isaayos ang isa-isa at makita kung aling variable na pagsasaayos ang nagiging sanhi ng pagkabigo ng server.

Kung matagumpay na muling mai-restart ang server, mag-rerun tuneprimer at tingnan kung mayroong anumang higit pang mga rekomendasyon tungkol sa variable na pag-aayos ng mga halaga.

Konklusyon

Napakahalaga na tandaan na ang mga tool sa pag-tune mysqltuner o tuning-primer ay hindi ang mga solusyon sa hindi magandang pagsasagawa ng MySQL server, ngunit sa halip ay mga script upang gabayan ka upang maayos ang tune ng MySQL server.

Para sa pinakamahusay na pagganap,

  • Gawin ang isang masusing pagsusuri ng mga query na ipinadala sa server at i-optimize ang istraktura / disenyo ng database at query ng SQL
  • Suriin ang mga kadahilanan na nakakaapekto sa pagganap ng MySQL tulad ng ipinaliwanag sa pagpapakilala.
  • Isaalang-alang ang pag-upgrade ng hardware ng pisikal na server para sa mas mahusay na pagganap at i-optimize ang mga pagsasaayos ng MySQL batay sa mga pagtutukoy ng hardware.
  • Gawin ang higit pang pananaliksik sa kung paano i-tune ang mga pagsasaayos ng MySQL batay sa mga application na gumagamit ng MySQL server.

Lubhang inirerekumenda na regular na magpatakbo ng mysqltuner o tuningprimer tool na higit sa 48 oras na span pagkatapos ma-restart ang MySQL server, upang makakuha ng makabuluhang istatistika ng paggamit.

Suriin ang mga nangungunang 3 MySQL hosting services:

A2 Hosting

Panimulang presyo:
$ 3.92


Kahusayan
9.3


Pagpepresyo
9.0


Friendly ng Gumagamit
9.3


Suporta
9.3


Mga Tampok
9.3

Basahin ang mga review

Bisitahin ang A2 Hosting

FastComet

Panimulang presyo:
$ 2.95


Kahusayan
9.7


Pagpepresyo
9.5


Friendly ng Gumagamit
9.7


Suporta
9.7


Mga Tampok
9.6

Basahin ang mga review

Bisitahin ang FastComet

Hostinger

Panimulang presyo:
$ 0.99


Kahusayan
9.3


Pagpepresyo
9.3


Friendly ng Gumagamit
9.4


Suporta
9.4


Mga Tampok
9.2

Basahin ang mga review

Bisitahin ang Hostinger

Kaugnay na Mga Artikulo Paano-Sa

  • Paano mag-tune at i-optimize ang Pagganap ng MySQL 8.0 sa isang CentOS 7 Server
    dalubhasa
  • Paano i-backup ang Iyong Database ng MySQL sa isang Ubuntu 18.04 VPS o Dedicated Server
    nasa pagitan
  • Paano i-install ang MYSQL 8.0 at Gumawa ng isang Database sa isang Ubuntu 18.04 Linux VPS
    nasa pagitan
  • Paano Hindi Paganahin ang MySQL 5 "Mahigpit na Mode" sa isang Ubuntu 18.04 VPS o Dedicated Server
    nasa pagitan
  • Paano i-install ang PhpMyAdmin sa isang Ubuntu 18.04 VPS o Dedicated Server
    nasa pagitan
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me