15 naudingų MySQL/MariaDB našumo derinimo ir optimizavimo patarimų


MySQL yra galinga atvirojo kodo Reliacinių duomenų bazių valdymo sistema arba trumpai RDBMS. Jis buvo išleistas dar 1995 m. (20 metų). Jame naudojama Struktūrinės užklausos kalba, kuri tikriausiai yra populiariausias pasirinkimas duomenų bazės turiniui tvarkyti. Naujausia MySQL versija yra 5.6.25 ir buvo išleista 2015 m. gegužės 29 d..

Įdomus faktas apie MySQL yra tai, kad pavadinimas kilęs iš Michael Widenius (MySQL kūrėjo) dukters My. Nors yra daug įdomių faktų apie MySQL, šis straipsnis skirtas parodyti keletą naudingų praktikų, padedančių valdyti MySQL serverį.

2009 m. balandžio mėn. „Oracle“ nupirko „MySQL“ projektą. Dėl to buvo sukurta MySQL bendruomenės šakutė, pavadinta MariaDB. Pagrindinė šakės sukūrimo priežastis buvo, kad projektas būtų nemokamas pagal bendrąją viešąją licenciją.

Šiandien MySQL ir MariaDB yra vienos iš dažniausiai (jei ne dažniausiai) naudojamų RDBVS, naudojamų žiniatinklio programoms, tokioms kaip WordPress, Joomla, Magento ir kt.

Šiame straipsnyje bus parodyta keletas pagrindinių, tačiau naudingų patarimų, kaip optimizuoti MySQL/MariaDB našumą. Atminkite, kad šiame straipsnyje daroma prielaida, kad jau esate įdiegę MySQL arba MariaDB. Jei vis dar svarstote, kaip juos įdiegti savo sistemoje, galite vadovautis mūsų išsamiais vadovais čia:

  1. LAMP diegimas RHEL/CentOS 7
  2. LAMP diegimas Fedora 22
  3. LAMP nustatymas Ubuntu 15.04
  4. „MariaDB“ diegimas „Debian 8“.
  5. Įdiekite MariaDB „Gentoo Linux“.
  6. Įdiekite MariaDB „Arch Linux“.

Svarbu: prieš pradėdami – nepriimkite šių pasiūlymų aklai. Kiekviena „MySQL“ sąranka yra unikali ir prieš atliekant bet kokius pakeitimus ją reikia pagalvoti.

Ką reikia žinoti:

  1. MySQL/MariaDB konfigūracijos failas yra /etc/my.cnf. Kiekvieną kartą keisdami šį failą turėsite iš naujo paleisti MySQL paslaugą, kad nauji pakeitimai įsigaliotų.
  2. Rašant šį straipsnį kaip šablonas buvo naudojama MySQL versija 5.6.

1. Įgalinkite InnoDB failą lentelėje

Pirmiausia svarbu paaiškinti, kad InnoDB yra saugojimo variklis. MySQL ir MariaDB naudoja InnoDB kaip numatytąjį saugojimo variklį. Anksčiau „MySQL“ duomenų bazių lenteles ir indeksus laikydavo sistemos lentelių erdvėje. Šis metodas buvo skirtas serveriams, kurių vienintelis tikslas yra duomenų bazių apdorojimas, o jų saugojimo diskas nenaudojamas jokiems kitiems tikslams.

InnoDB suteikia lankstesnį požiūrį ir kiekviena duomenų bazės informacija saugoma .ibd duomenų faile. Kiekvienas .ibd failas yra atskira lentelės sritis. Tokiu būdu duomenų bazės operacijos, pvz., „TRUNCATE“, gali būti atliekamos greičiau, o taip pat galite atgauti nepanaudotą vietą, kai numetate arba sutrumpinate duomenų bazės lentelę.

Kitas šios konfigūracijos pranašumas yra tai, kad kai kurias duomenų bazių lenteles galite laikyti atskirame saugojimo įrenginyje. Tai gali labai pagerinti I/O apkrovą jūsų diskuose.

innodb_file_per_table yra įgalinta pagal numatytuosius nustatymus MySQL 5.6 ir naujesnėse versijose. Tai galite pamatyti faile /etc/my.cnf. Direktyva atrodo taip:

innodb_file_per_table=1

2. Išsaugokite MySQL duomenų bazės duomenis atskirame skaidinyje

Pastaba: ši sąranka veikia tik su MySQL, bet ne su MariaDB.

Kartais OS skaitymas/rašymas gali sulėtinti jūsų MySQL serverio veikimą, ypač jei jis yra tame pačiame standžiajame diske. Vietoj to MySQL paslaugai rekomenduočiau naudoti atskirą standųjį diską (geriausia SSD).

Norėdami tai užbaigti, turėsite prijungti naują diską prie kompiuterio/serverio. Šiame straipsnyje darysiu prielaidą, kad diskas bus /dev/sdb.

Kitas veiksmas yra naujo disko paruošimas:

fdisk /dev/sdb

Dabar paspauskite „n“, kad sukurtumėte naują skaidinį. Tada paspauskite „p“, kad naujas skaidinys būtų pagrindinis. Po to nustatykite skaidinio numerį nuo 1–4. Po to pasirinksite skaidinio dydį. Paspauskite enter čia. Kitame veiksme turėsite sukonfigūruoti skaidinio dydį.

Jei norite naudoti visą diską, dar kartą paspauskite Enter. Kitu atveju galite rankiniu būdu nustatyti naujo skaidinio dydį. Kai būsite pasiruošę, paspauskite „w“, kad įrašytumėte pakeitimus. Dabar turėsime sukurti failų sistemą naujam skaidiniui. Tai galima lengvai padaryti naudojant:

mkfs.ext4 /dev/sdb1

Dabar mes prijungsime savo naują skaidinį į aplanką. Pavadinau savo aplanką ssd ir sukūriau šakniniame kataloge:

mkdir /ssd/

Esame pasirengę prijungti naują skaidinį, kurį ką tik sukūrėme naujame aplanke:

mount /dev/sdb1  /ssd/

Montavimą galite atlikti paleidžiant, pridėdami šią eilutę į failą /etc/fstab.

/dev/sdb1 /ssd ext3 defaults 0 0

Dabar esate pasirengę perkelti MySQL į naują diską. Pirmiausia sustabdykite „MySQL“ paslaugą:

service mysqld stop

Taip pat rekomenduočiau sustabdyti „Apache“/„nginx“, kad išvengtumėte bandymų rašyti duomenų bazėse:

service httpd stop
service nginx stop

Dabar nukopijuokite visą MySQL katalogą naujame diske:

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

Tai gali užtrukti, priklausomai nuo jūsų MySQL duomenų bazių svetainės. Kai šis procesas bus baigtas, pervardykite MySQL katalogą:

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

Toliau sukursime simbolinę nuorodą.

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

Dabar esate pasirengę pradėti savo MySQL ir žiniatinklio paslaugą:

service mysqld start
service httpd start
service nginx start

Šiuo metu jūsų MySQL duomenų bazės bus pasiekiamos iš naujo disko.