15 Nyttige MySQL/MariaDB Performance Tuning og optimeringstip


MySQL er et kraftfuldt open source Relational Database Management System eller kort sagt RDBMS. Den blev frigivet tilbage i 1995 (20 år gammel). Det bruger Structured Query Language, som sandsynligvis er det mest populære valg til styring af indhold i en database. Den seneste MySQL-version er 5.6.25 og blev udgivet den 29. maj 2015.

En interessant kendsgerning om MySQL er, at navnet stammer fra Michael Widenius (MySQLs skaber) datter My. Selvom der er masser af interessante fakta om MySQL, er denne artikel beregnet til at vise dig nogle nyttige fremgangsmåder, der hjælper dig med at administrere din MySQL-server.

I april 2009 blev MySQL-projektet købt af Oracle. Som et resultat blev en MySQL-community-gaffel kaldet MariaDB oprettet. Hovedårsagen til at skabe gaffelen var at holde projektet frit under General Public License.

I dag er MySQL og MariaDB en af de mest (hvis ikke de mest) hyppigt anvendte RDBMS, der bruges til webapplikationer som WordPress, Joomla, Magento og andre.

Denne artikel viser dig nogle grundlæggende, men alligevel nyttige tip til, hvordan du optimerer finjusteringen af MySQL/MariaDB's ydeevne. Husk, at denne artikel antager, at du allerede har MySQL eller MariaDB installeret. Hvis du stadig undrer dig over, hvordan du installerer dem på dit system, kan du følge vores omfattende guider her:

  1. Installation af LAMP på RHEL/CentOS 7
  2. Installation af LAMP på Fedora 22
  3. Opsætning af LAMP på Ubuntu 15.04
  4. Installation af MariaDB på Debian 8
  5. Installer MariaDB på Gentoo Linux
  6. Installer MariaDB på Arch Linux

Vigtigt: Inden vi starter - accepter ikke disse forslag blindt. Hver MySQL-opsætning er unik og kræver yderligere overvejelser, inden der foretages ændringer.

Ting du skal vide:

  1. MySQL/MariaDB-konfigurationsfil findes i /etc/my.cnf . Hver gang du ændrer denne fil, skal du genstarte MySQL-tjenesten, så de nye ændringer kan træde i kraft.
  2. Til at skrive denne artikel er MySQL version 5.6 blevet brugt som skabelon.

1. Aktivér InnoDB-fil pr. Tabel

Først er det vigtigt at forklare, at InnoDB er en lagermotor. MySQL og MariaDB bruger InnoDB som standardlagermotor. Tidligere bruges MySQL til at opbevare databasetabeller og indekser i et systemtabellrum. Denne tilgang var beregnet til servere, hvis eneste formål er databasebehandling, og deres lagerdisk bruges ikke til andre formål.

InnoDB giver en mere fleksibel tilgang, og hver databaseinformation opbevares i en .ibd -datafil. Hver .ibd-fil repræsenterer et eget bordområde. På den måde kan databasefunktioner som “TRUNCATE” afsluttes hurtigere, og du kan også genvinde ubrugt plads, når du taber eller afkorter en databasetabel.

En anden fordel ved denne konfiguration er, at du kan gemme nogle af databasetabellerne i en separat lagerenhed. Dette kan i høj grad forbedre I/O-belastningen på dine diske.

Innodb_file_per_table er aktiveret som standard i MySQL 5.6 og derover. Du kan se det i /etc/my.cnf-filen. Direktivet ser sådan ud:

innodb_file_per_table=1

2. Gem MySQL-databasedata på separat partition

Bemærk: Denne opsætning fungerer kun med MySQL, men ikke med MariaDB.

Nogle gange kan OS læse/skrive sænke ydeevnen på din MySQL-server, især hvis den findes på samme harddisk. I stedet vil jeg anbefale at bruge en separat harddisk (helst SSD) til MySQL-tjenesten.

For at fuldføre dette skal du knytte det nye drev til din computer/server. Med henblik på denne artikel antager jeg, at drevet vil være under/dev/sdb.

Det næste trin er at forberede det nye drev:

# fdisk /dev/sdb

Tryk nu på “n” for at oprette en ny partition. Tryk derefter på “p” for at gøre den nye partition primær. Derefter skal du indstille partitionsnummeret fra 1-4. Derefter vælger du partitionsstørrelsen. Tryk på Enter her. På det næste trin skal du konfigurere partitionens størrelse.

Hvis du vil bruge hele disken, skal du trykke på enter igen. Ellers kan du manuelt indstille størrelsen på den nye partition. Når du er klar, skal du trykke på “w” for at skrive ændringerne. Nu bliver vi nødt til at oprette et filsystem til vores nye partition. Dette kan let gøres med:

# mkfs.ext4 /dev/sdb1

Nu monterer vi vores nye partition i en mappe. Jeg har navngivet min mappe “ssd” og oprettet i rodmappen:

# mkdir /ssd/

Vi er klar til at montere den nye partition, vi lige har lavet i den nye mappe:

# mount /dev/sdb1  /ssd/

Du kan udføre monteringen ved opstart ved at tilføje følgende linje i/etc/fstab-filen.

/dev/sdb1 /ssd ext3 defaults 0 0

Nu er du klar til at flytte MySQL til den nye disk. Stop først MySQL-tjenesten med:

# service mysqld stop

Jeg vil anbefale dig også at stoppe Apache/nginx for at forhindre ethvert forsøg på at skrive i databaser:

# service httpd stop
# service nginx stop

Kopier nu hele MySQL-biblioteket i det nye drev:

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

Dette kan tage et stykke tid afhængigt af webstedet for dine MySQL-databaser. Når denne proces er afsluttet, skal du omdøbe MySQL-biblioteket:

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

Dernæst opretter vi et symlink.

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

Nu er du klar til at starte din MySQL og webservice:

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

På dette tidspunkt får du adgang til dine MySQL-databaser fra det nye drev.