15 Peýdaly MySQL/MariaDB öndürijilik sazlamak we optimizasiýa maslahatlary


MySQL güýçli açyk çeşme Baglanyşyk maglumatlar bazasyny dolandyrmak ulgamy ýa-da gysgaça RDBMS. 1995-nji ýylda (20 ýaşynda) çykdy. Maglumatlar bazasynyň içindäki mazmuny dolandyrmak üçin iň meşhur saýlama gurluşly talap dilini ulanýar. Iň soňky MySQL wersiýasy 5.6.25 bolup, 2015-nji ýylyň 29-njy maýynda çykdy.

MySQL hakda gyzykly bir hakykat, adyň Maýkl Wideniusyň (MySQL döredijisi) gyzy My-dan gelip çykmagydyr. MySQL hakda gyzykly maglumatlar köp bolsa-da, bu makala size MySQL serweriňizi dolandyrmaga kömek etjek käbir peýdaly amallary görkezmek üçin niýetlenendir.

2009-njy ýylyň aprelinde MySQL taslamasy Oracle tarapyndan satyn alyndy. Netijede, MariaDB atly MySQL jemgyýetçilik çeňňegi döredildi. Çeňňegi döretmegiň esasy sebäbi, umumy jemgyýetçilik ygtyýarnamasy boýunça taslamany erkin saklamakdy.

Häzirki wagtda MySQL we MariaDB WordPress, Joomla, Magento we başgalar ýaly web programmalary üçin ulanylýan iň köp ulanylýan (iň köp bolmasa) RDBMS.

Bu makala size MySQL/MariaDB-iň öndürijiligini nädip sazlamalydygyny görkezýän esasy, ýöne peýdaly maslahatlary görkezer. Bu makalanyň eýýäm MySQL ýa-da MariaDB gurlandygyny göz öňünde tutýandygyny ýadyňyzdan çykarmaň. Olary ulgamyňyza nädip gurmalydygy bilen gyzyklanýan bolsaňyz, giňişleýin gollanmalarymyzy şu ýerden yzarlap bilersiňiz:

  1. RHEL/CentOS 7-de lampa gurmak
  2. Fedora 22-de LAMP gurmak
  3. Ubuntu 15.04-de LAMP gurmak
  4. Debian 8-de MariaDB gurmak
  5. Gentoo Linux-da MariaDB guruň
  6. Arch Linux-da MariaDB guruň

Üns beriň: Başlamazdan ozal - bu teklipleri kör kabul etmäň. Her MySQL gurnama aýratyn we üýtgeşiklik etmezden ozal goşmaça pikirlenmegi talap edýär.

Bilmeli zatlaryňyz:

  1. MySQL/MariaDB konfigurasiýa faýly /etc/my.cnf -da ýerleşýär. Her gezek bu faýly üýtgedeniňizde, täze üýtgeşmeleriň güýje girmegi üçin MySQL hyzmatyny täzeden açmaly bolarsyňyz.
  2. Bu makalany ýazmak üçin MySQL 5.6 wersiýasy şablon hökmünde ulanyldy.

1. Her stolda “InnoDB” faýly işlediň

Ilki bilen “InnoDB” -iň saklaýjy hereketlendirijidigini düşündirmek möhümdir. MySQL we MariaDB InnoDB-ni deslapky saklaýjy hereketlendiriji hökmünde ulanýarlar. Geçmişde MySQL maglumatlar bazasynyň tablisalaryny we indekslerini ulgam tablisasynda saklaýardy. Bu çemeleşme, maglumatlar bazasyny gaýtadan işlemek we saklaýyş diski başga maksatlar üçin ulanylmaýan serwerler üçin niýetlenipdi.

InnoDB has çeýe çemeleşmäni üpjün edýär we maglumatlar bazasynyň her bir maglumatlary .ibd maglumat faýlynda saklanýar. Her .ibd faýly öz tablisasyny görkezýär. Şeýlelik bilen\TRUNCATE ýaly maglumat bazasynyň amallary has çalt tamamlanyp bilner we maglumat bazasynyň tablisasyny taşlanyňyzda ýa-da keseniňizde ulanylmadyk ýerleri yzyna alyp bilersiňiz.

Bu konfigurasiýanyň başga bir peýdasy, maglumatlar bazasynyň tablisalarynyň käbirini aýratyn saklaýyş enjamynda saklap bilersiňiz. Bu, diskleriňizdäki I/O ýüküni ep-esli gowulaşdyryp biler.

“Innodb_file_per_table” MySQL 5.6 we ondan ýokary görnüşde işledilýär. Muny /etc/my.cnf faýlynda görüp bilersiňiz. Direktiw şeýle görünýär:

innodb_file_per_table=1

2. MySQL maglumat bazasynyň maglumatlaryny aýratyn bölümde saklaň

Bellik: Bu gurnama diňe MySQL bilen işleýär, ýöne MariaDB bilen däl.

Käwagt OS okamak/ýazmak, esasanam şol bir gaty diskde ýerleşýän bolsa, MySQL serweriňiziň işleýşini haýalladyp biler. Munuň ýerine MySQL hyzmaty üçin aýratyn gaty diski (has gowusy SSD) ulanmagy maslahat bererin.

Bu işi tamamlamak üçin täze sürüjini kompýuteriňize/serweriňize birikdirmeli bolarsyňyz. Bu makalanyň maksady üçin, sürüjiniň/dev/sdb astynda boljakdygyny çaklaýaryn.

Indiki ädim täze sürüjini taýýarlamakdyr:

# fdisk /dev/sdb

Indi täze bölüm döretmek üçin\n basyň. Täze bölümi esasy etmek üçin indiki p basyň. Ondan soň, bölüm belgisini 1-4-den düzüň. Ondan soň bölümiň ululygyny saýlarsyňyz. Enter basyň. Indiki ädimde bölümiň ululygyny düzmeli bolarsyňyz.

Diski tutuşlygyna ulanmak isleseňiz, ýene bir gezek basyň. Otherwiseogsam, täze bölümiň ululygyny el bilen düzüp bilersiňiz. Taýýar bolanyňyzda üýtgeşmeleri ýazmak üçin\w basyň. Indi täze bölümimiz üçin faýl ulgamyny döretmeli bolarys. Bu aňsatlyk bilen amala aşyrylyp bilner:

# mkfs.ext4 /dev/sdb1

Indi täze bölümimizi bukja ýerleşdireris. Papkamy\ssd diýip atlandyrdym we kök katalogynda döretdim:

# mkdir /ssd/

Justaňy täze bukjada eden täze bölümimizi gurmaga taýyn:

# mount /dev/sdb1  /ssd/

Başlangyçda/etc/fstab faýlyna aşakdaky setiri goşup ýerine ýetirip bilersiňiz.

/dev/sdb1 /ssd ext3 defaults 0 0

Indi MySQL-i täze diske geçirmäge taýyn. Ilki bilen MySQL hyzmatyny bes ediň:

# service mysqld stop

Maglumatlar bazalarynda ýazmak synanyşygynyň öňüni almak üçin Apache/nginx-i duruzmagyňyzy maslahat berýärin:

# service httpd stop
# service nginx stop

Indi MySQL katalogyny täze diskde göçüriň:

# cp /var/lib/mysql /ssd/ -Rp

MySQL maglumat bazalaryňyzyň sahypasyna baglylykda bu birneme wagt alyp biler. Bu amal tamamlanandan soň MySQL katalogynyň adyny üýtgediň:

# mv /var/lib/mysql /var/lib/mysql-backup

Indiki bir baglanyşyk dörederis.

# ln -s /ssd/mysql /var/lib/mysql

Indi MySQL we web hyzmatyňyzy başlamaga taýyn:

# service mysqld start
# service httpd start
# service nginx start

Bu wagt MySQL maglumat bazalaryňyza täze diskden girip bilersiňiz.