Vidokezo 15 Muhimu vya Kurekebisha Utendaji na Uboreshaji wa MySQL/MariaDB


MySQL ni chanzo wazi chenye nguvu cha Mfumo wa Usimamizi wa Hifadhidata ya Kihusiano au kwa kifupi RDBMS. Ilitolewa nyuma mnamo 1995 (umri wa miaka 20). Inatumia Lugha ya Maswali Iliyoundwa ambayo pengine ndiyo chaguo maarufu zaidi la kudhibiti maudhui ndani ya hifadhidata. Toleo la hivi punde la MySQL ni 5.6.25 na lilitolewa tarehe 29 Mei 2015.

Ukweli wa kuvutia juu ya MySQL ni ukweli kwamba jina linatoka kwa binti wa Michael Widenius (muundaji wa MySQL) My. Ingawa kuna mambo mengi ya kuvutia kuhusu MySQL, makala hii inakusudiwa kukuonyesha baadhi ya mbinu muhimu za kukusaidia kudhibiti seva yako ya MySQL.

Mnamo Aprili 2009 mradi wa MySQL ulinunuliwa na Oracle. Kama matokeo ya uma ya jamii ya MySQL inayoitwa MariaDB iliundwa. Sababu kuu ya kuunda uma ilikuwa kuweka mradi bure chini ya Leseni ya Jumla ya Umma.

Leo MySQL na MariaDB ni mojawapo ya RDBMS zinazotumiwa mara kwa mara (ikiwa sio zaidi) kwa programu za wavuti kama vile WordPress, Joomla, Magento na zingine.

Nakala hii itakuonyesha vidokezo vya kimsingi, lakini muhimu jinsi ya kuboresha utendakazi wa MySQL/MariaDB. Tafadhali kumbuka kuwa kifungu hiki kinachukulia kuwa tayari una MySQL au MariaDB iliyosakinishwa. Ikiwa bado unajiuliza jinsi ya kuzisakinisha kwenye mfumo wako, unaweza kufuata miongozo yetu ya kina hapa:

  1. Inasakinisha LAMP kwenye RHEL/CentOS 7
  2. Kusakinisha LAMP kwenye Fedora 22
  3. Kuweka TAA kwenye Ubuntu 15.04
  4. Kusakinisha MariaDB kwenye Debian 8
  5. Sakinisha MariaDB kwenye Gentoo Linux
  6. Sakinisha MariaDB kwenye Arch Linux

Muhimu: Kabla ya kuanza - usikubali mapendekezo haya kwa upofu. Kila usanidi wa MySQL ni wa kipekee na unahitaji mawazo ya ziada, kabla ya kufanya mabadiliko yoyote.

Mambo unayohitaji kujua:

  1. Faili ya usanidi ya MySQL/MariaDB iko katika /etc/my.cnf. Kila wakati unaporekebisha faili hii utahitaji kuanzisha upya huduma ya MySQL ili mabadiliko mapya yaanze kutekelezwa.
  2. Kwa kuandika makala haya toleo la 5.6 la MySQL limetumika kama kiolezo.

1. Washa faili ya InnoDB kwa kila jedwali

Kwanza ni muhimu kueleza kuwa InnoDB ni injini ya kuhifadhi. MySQL na MariaDB hutumia InnoDB kama injini ya uhifadhi chaguo-msingi. Hapo awali MySQL ilitumika kuweka jedwali za hifadhidata na faharisi kwenye nafasi ya meza ya mfumo. Mbinu hii ilikusudiwa kwa seva ambazo madhumuni yake pekee ni usindikaji wa hifadhidata na diski yao ya uhifadhi haitumiki kwa madhumuni mengine yoyote.

InnoDB hutoa mbinu rahisi zaidi na kila taarifa ya hifadhidata huwekwa katika .ibd faili ya data. Kila faili ya .ibd inawakilisha nafasi yake ya mezani. Kwa njia hiyo, utendakazi wa hifadhidata kama vile \TRUNCATE unaweza kukamilika haraka na unaweza pia kudai tena nafasi ambayo haijatumika unapodondosha au kupunguza jedwali la hifadhidata.

Faida nyingine ya usanidi huu ni ukweli kwamba unaweza kuweka baadhi ya meza za hifadhidata kwenye kifaa tofauti cha kuhifadhi. Hii inaweza kuboresha sana mzigo wa I/O kwenye diski zako.

Innodb_file_per_table imewezeshwa kwa chaguo-msingi katika MySQL 5.6 na hapo juu. Unaweza kuona hilo katika /etc/my.cnf faili. Mwongozo unaonekana kama hii:

innodb_file_per_table=1

2. Hifadhi Database ya MySQL kwenye Sehemu Tenga

Kumbuka: Usanidi huu hufanya kazi tu na MySQL, lakini sio na MariaDB.

Wakati mwingine mfumo wa kusoma/kuandika unaweza kupunguza kasi ya utendakazi wa seva yako ya MySQL, haswa ikiwa iko kwenye diski kuu moja. Badala yake, ningependekeza kutumia kiendeshi tofauti (ikiwezekana SSD) kwa huduma ya MySQL.

Ili kukamilisha, utahitaji kuambatisha kiendeshi kipya kwenye kompyuta/seva yako. Kwa madhumuni ya kifungu hiki, nitafikiria kuwa gari litakuwa chini ya /dev/sdb.

Hatua inayofuata ni kuandaa gari mpya:

# fdisk /dev/sdb

Sasa bonyeza \n ili kuunda kizigeu kipya. Kisha bonyeza \p ili kufanya kizigeu kipya kuwa msingi. Baada ya hayo, weka nambari ya kizigeu kutoka 1-4. Baada ya hapo utachagua saizi ya kizigeu. Bonyeza ingia hapa. Katika hatua inayofuata utahitaji kusanidi saizi ya kizigeu.

Ikiwa ungependa kutumia diski nzima bonyeza ingiza kwa mara nyingine. Vinginevyo unaweza kuweka mwenyewe ukubwa wa kizigeu kipya. Ukiwa tayari bonyeza \w ili kuandika mabadiliko. Sasa tutahitaji kuunda mfumo wa faili kwa kizigeu chetu kipya. Hili linaweza kufanywa kwa urahisi na:

# mkfs.ext4 /dev/sdb1

Sasa tutaweka kizigeu chetu kipya kwenye folda. Nimeita folda yangu \ssd na kuunda kwenye saraka ya mizizi:

# mkdir /ssd/

Tuko tayari kuweka kizigeu kipya ambacho tumetengeneza kwenye folda mpya:

# mount /dev/sdb1  /ssd/

Unaweza kutekeleza mlima wakati wa kuanza kwa kuongeza laini ifuatayo kwenye faili /etc/fstab.

/dev/sdb1 /ssd ext3 defaults 0 0

Sasa uko tayari kuhamisha MySQL hadi kwenye diski mpya. Kwanza simamisha huduma ya MySQL na:

# service mysqld stop

Ningependekeza uache Apache/nginx pia ili kuzuia majaribio yoyote ya kuandika kwenye hifadhidata:

# service httpd stop
# service nginx stop

Sasa nakili saraka nzima ya MySQL kwenye kiendeshi kipya:

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

Hii inaweza kuchukua muda kulingana na tovuti ya hifadhidata zako za MySQL. Mara tu mchakato huu utakapokamilika, badilisha jina la saraka ya MySQL:

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

Ifuatayo tutaunda ulinganifu.

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

Sasa uko tayari kuanza MySQL yako na huduma ya wavuti:

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

Katika hatua hii hifadhidata zako za MySQL zitafikiwa kutoka kwa hifadhi mpya.