15 koristnih nasvetov za nastavitev in optimizacijo zmogljivosti MySQL/MariaDB


MySQL je zmogljiv odprtokodni sistem za upravljanje relacijske baze podatkov ali skratka RDBMS. Izšel je davnega leta 1995 (star 20 let). Uporablja jezik strukturiranih poizvedb, ki je verjetno najbolj priljubljena izbira za upravljanje vsebin znotraj baze podatkov. Najnovejša različica MySQL je 5.6.25 in je izšla 29. maja 2015.

Zanimivo dejstvo o MySQL je dejstvo, da ime izvira iz hčerke Michaela Wideniusa (ustvarjalca MySQL-a) My. Čeprav obstaja veliko zanimivih dejstev o MySQL, je ta članek namenjen predstavitvi nekaterih uporabnih praks za upravljanje strežnika MySQL.

Aprila 2009 je Oracle kupil projekt MySQL. Kot rezultat je nastal vilic skupnosti MySQL, imenovan MariaDB. Glavni razlog za ustvarjanje vilice je bil, da projekt ostane brezplačen na podlagi splošne javne licence.

Danes sta MySQL in MariaDB ena najpogosteje (če ne najpogosteje) najpogosteje uporabljenih RDBMS, ki se uporabljajo za spletne aplikacije, kot so WordPress, Joomla, Magento in druge.

Ta članek vam bo pokazal nekaj osnovnih, a koristnih nasvetov, kako optimizirati natančno nastavitev delovanja MySQL/MariaDB. Upoštevajte, da ta članek predvideva, da ste že namestili MySQL ali MariaDB. Če se še vedno sprašujete, kako jih namestiti v sistem, lahko tukaj sledite našim obsežnim vodnikom:

  1. Namestitev LAMP na RHEL/CentOS 7
  2. Namestitev LAMP na Fedora 22
  3. Nastavitev LAMP na Ubuntu 15.04
  4. Namestitev MariaDB na Debian 8
  5. Namestite MariaDB na Gentoo Linux
  6. Namestite MariaDB v Arch Linux

Pomembno: Preden začnemo - teh predlogov ne sprejmite slepo. Vsaka nastavitev MySQL je edinstvena in zahteva dodatne premisleke pred kakršnimi koli spremembami.

Stvari, ki jih morate vedeti:

  1. Konfiguracijska datoteka MySQL/MariaDB se nahaja v /etc/my.cnf . Vsakič, ko spremenite to datoteko, boste morali znova zagnati storitev MySQL, da bodo nove spremembe lahko začele veljati.
  2. Za pisanje tega članka je bila kot predloga uporabljena različica MySQL 5.6.

1. Omogočite datoteko InnoDB na tabelo

Najprej je treba pojasniti, da je InnoDB pomnilniški stroj. MySQL in MariaDB uporabljata InnoDB kot privzeti pomnilnik. V preteklosti je MySQL hranil tabele in indekse zbirk podatkov v sistemskem prostoru tabel. Ta pristop je bil namenjen strežnikom, katerih edini namen je obdelava baz podatkov, njihov pomnilniški disk pa se ne uporablja za nobene druge namene.

InnoDB omogoča bolj prilagodljiv pristop in vse informacije o zbirki podatkov se hranijo v podatkovni datoteki .ibd . Vsaka datoteka .ibd predstavlja lasten prostor tabel. Na ta način lahko operacije baz podatkov, kot je\"TRUNCATE", dokončate hitreje in lahko tudi izkoristite neporabljeni prostor, ko spustite ali okrnite tabelo baze podatkov.

Druga prednost te konfiguracije je dejstvo, da lahko nekatere tabele zbirke podatkov shranite v ločeni pomnilniški napravi. To lahko močno izboljša obremenitev V/I na diskih.

Tabela innodb_file_per_table je privzeto omogočena v MySQL 5.6 in novejših različicah. To lahko vidite v datoteki /etc/my.cnf. Direktiva je videti takole:

innodb_file_per_table=1

2. Shranite podatke zbirke podatkov MySQL na ločeni particiji

Opomba: Ta nastavitev deluje samo z MySQL, ne pa tudi z MariaDB.

Včasih lahko branje/pisanje OS upočasni delovanje vašega strežnika MySQL, še posebej, če je na istem trdem disku. Namesto tega priporočam uporabo ločenega trdega diska (po možnosti SSD) za storitev MySQL.

Za dokončanje boste morali novi pogon priključiti na računalnik/strežnik. Za namen tega članka predvidevam, da bo pogon pod/dev/sdb.

Naslednji korak je priprava novega pogona:

# fdisk /dev/sdb

Zdaj pritisnite\"n", da ustvarite novo particijo. Nato pritisnite\"p", da nova particija postane primarna. Po tem nastavite številko particije od 1-4. Po tem boste izbrali velikost particije. Pritisnite enter tukaj. V naslednjem koraku boste morali nastaviti velikost particije.

Če želite uporabiti celoten disk, še enkrat pritisnite enter. V nasprotnem primeru lahko ročno nastavite velikost nove particije. Ko ste pripravljeni, pritisnite\"w", da napišete spremembe. Zdaj bomo morali ustvariti datotečni sistem za našo novo particijo. To lahko enostavno storite z:

# mkfs.ext4 /dev/sdb1

Zdaj bomo novo particijo namestili v mapo. Svojo mapo sem poimenoval\"ssd" in ustvaril v korenskem imeniku:

# mkdir /ssd/

Pripravljeni smo na novo particijo, ki smo jo pravkar izdelali, v novo mapo:

# mount /dev/sdb1  /ssd/

Namestitev lahko izvedete ob zagonu, tako da v datoteko/etc/fstab dodate naslednjo vrstico.

/dev/sdb1 /ssd ext3 defaults 0 0

Zdaj ste pripravljeni premakniti MySQL na nov disk. Najprej ustavite storitev MySQL z:

# service mysqld stop

Priporočam, da ustavite tudi Apache/nginx, da preprečite kakršne koli poskuse pisanja v zbirke podatkov:

# service httpd stop
# service nginx stop

Zdaj kopirajte celoten imenik MySQL v novi pogon:

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

To lahko traja nekaj časa, odvisno od mesta vaših zbirk podatkov MySQL. Ko je ta postopek končan, preimenujte imenik MySQL:

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

Nato bomo ustvarili simbolno povezavo.

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

Zdaj ste pripravljeni zagnati svojo MySQL in spletno storitev:

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

Na tej točki bodo vaše baze podatkov MySQL dostopne z novega pogona.