15 Nyttige MySQL/MariaDB ytelsesjustering og optimaliseringstips


MySQL er et kraftig åpen kildekode Relational Database Management System eller kort sagt RDBMS. Den ble utgitt tilbake i 1995 (20 år gammel). Den bruker Structured Query Language som sannsynligvis er det mest populære valget for å administrere innhold i en database. Den siste MySQL-versjonen er 5.6.25 og ble utgitt 29. mai 2015.

Et interessant faktum om MySQL er det faktum at navnet kommer fra Michael Widenius (MySQLs skaper) datter My. Selvom det er mange interessante fakta om MySQL, er denne artikkelen ment å vise deg noen nyttige fremgangsmåter for å hjelpe deg med å administrere MySQL-serveren.

I april 2009 ble MySQL-prosjektet kjøpt av Oracle. Som et resultat ble det opprettet en MySQL-fellesskapsfork kalt MariaDB. Hovedårsaken til å lage gaffelen var å holde prosjektet gratis under General Public License.

I dag er MySQL og MariaDB en av de mest (om ikke de mest) brukte RDBMS-ene som brukes for nettapplikasjoner som WordPress, Joomla, Magento og andre.

Denne artikkelen vil vise deg noen grunnleggende, men likevel nyttige tips om hvordan du kan optimere finjusteringen av ytelsen til MySQL/MariaDB. Vær oppmerksom på at denne artikkelen forutsetter at du allerede har MySQL eller MariaDB installert. Hvis du fortsatt lurer på hvordan du installerer dem på systemet ditt, kan du følge våre omfattende guider her:

  1. Installere LAMP på RHEL/CentOS 7
  2. Installerer LAMP på Fedora 22
  3. Sette opp LAMP på Ubuntu 15.04
  4. Installerer MariaDB på Debian 8
  5. Installer MariaDB på Gentoo Linux
  6. Installer MariaDB på Arch Linux

Viktig: Før vi begynner – ikke aksepter disse forslagene blindt. Hvert MySQL-oppsett er unikt og krever ekstra omtanke før du gjør endringer.

Ting du trenger å vite:

  1. MySQL/MariaDB-konfigurasjonsfilen ligger i /etc/my.cnf. Hver gang du endrer denne filen, må du starte MySQL-tjenesten på nytt slik at de nye endringene kan tre i kraft.
  2. For å skrive denne artikkelen har MySQL versjon 5.6 blitt brukt som mal.

1. Aktiver InnoDB fil-per-tabell

Først er det viktig å forklare at InnoDB er en lagringsmotor. MySQL og MariaDB bruker InnoDB som standard lagringsmotor. Tidligere pleide MySQL å holde databasetabeller og indekser i et systemtabellområde. Denne tilnærmingen var ment for servere som eneste formål er databasebehandling og lagringsdisken deres ikke brukes til andre formål.

InnoDB gir en mer fleksibel tilnærming og hver databaseinformasjon holdes i en .ibd-datafil. Hver .ibd-fil representerer et eget tabellområde. På den måten kan databaseoperasjoner som «TRUNCATE» fullføres raskere, og du kan også gjenvinne ubrukt plass når du sletter eller trunkerer en databasetabell.

En annen fordel med denne konfigurasjonen er det faktum at du kan beholde noen av databasetabellene i en separat lagringsenhet. Dette kan i stor grad forbedre I/O-belastningen på diskene dine.

innodb_file_per_table er aktivert som standard i MySQL 5.6 og nyere. Du kan se det i filen /etc/my.cnf. Direktivet ser slik ut:

innodb_file_per_table=1

2. Lagre MySQL-databasedata på en separat partisjon

Merk: Dette oppsettet fungerer bare med MySQL, men ikke med MariaDB.

Noen ganger kan OS-lesing/skriving redusere ytelsen til MySQL-serveren din, spesielt hvis den ligger på samme harddisk. I stedet vil jeg anbefale å bruke separat harddisk (helst SSD) for MySQL-tjenesten.

For å fullføre dette må du koble den nye stasjonen til datamaskinen/serveren. For formålet med denne artikkelen vil jeg anta at stasjonen vil være under /dev/sdb.

Det neste trinnet er å forberede den nye stasjonen:

fdisk /dev/sdb

Trykk nå "n " for å opprette en ny partisjon. Trykk deretter "p " for å gjøre den nye partisjonen til primær. Deretter setter du partisjonsnummeret fra 1-4. Etter det vil du velge partisjonsstørrelsen. Trykk enter her. På neste trinn må du konfigurere størrelsen på partisjonen.

Hvis du ønsker å bruke hele disken, trykk enter en gang til. Ellers kan du manuelt angi størrelsen på den nye partisjonen. Når du er klar, trykk "w " for å skrive endringene. Nå må vi lage et filsystem for vår nye partisjon. Dette kan enkelt gjøres med:

mkfs.ext4 /dev/sdb1

Nå skal vi montere vår nye partisjon i en mappe. Jeg har kalt mappen min «ssd» og opprettet i rotkatalogen:

mkdir /ssd/

Vi er klare til å montere den nye partisjonen vi nettopp har laget i den nye mappen:

mount /dev/sdb1  /ssd/

Du kan utføre monteringen ved oppstart ved å legge til følgende linje i filen /etc/fstab.

/dev/sdb1 /ssd ext3 defaults 0 0

Nå er du klar til å flytte MySQL til den nye disken. Stopp først MySQL-tjenesten med:

service mysqld stop

Jeg vil anbefale deg å stoppe Apache/nginx også for å forhindre forsøk på å skrive i databasene:

service httpd stop
service nginx stop

Kopier nå hele MySQL-katalogen i den nye stasjonen:

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

Dette kan ta en stund avhengig av nettstedet til MySQL-databasene dine. Når denne prosessen er fullført, gi nytt navn til MySQL-katalogen:

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

Deretter vil vi lage en symbolkobling.

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

Nå er du klar til å starte din MySQL og webtjeneste:

service mysqld start
service httpd start
service nginx start

På dette tidspunktet vil MySQL-databasene dine få tilgang fra den nye stasjonen.