Hvordan installere, sikre og ytelsesjustering av MariaDB Database Server


En databaseserver er en kritisk komponent i nettverksinfrastrukturen som er nødvendig for dagens applikasjoner. Uten muligheten til å lagre, hente, oppdatere og slette data (ved behov), blir nytten og omfanget av nett- og skrivebordsapper svært begrenset.

I tillegg er det å vite hvordan man installerer, administrerer og konfigurerer en databaseserver (slik at den fungerer som forventet) en viktig ferdighet som enhver systemadministrator må ha.

I denne artikkelen vil vi kort gjennomgå hvordan du installerer og sikrer en MariaDB-databaseserver, og deretter vil vi forklare hvordan du konfigurerer den.

Installere og sikre en MariaDB-server

I CentOS 7.x erstattet MariaDB MySQL, som fortsatt kan finnes i Ubuntu (sammen med MariaDB). Det samme gjelder for openSUSE.

For korthets skyld vil vi bare bruke MariaDB i denne opplæringen, men vær oppmerksom på at i tillegg til å ha forskjellige navn og utviklingsfilosofier, er begge Relational DataBase Management Systems (RDBMS for korte) nesten identiske.

Dette betyr at kommandoene på klientsiden er de samme på både MySQL og MariaDB, og konfigurasjonsfilene er navngitt og plassert på samme steder.

For å installere MariaDB, gjør:

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# yum update && yum install mariadb mariadb-server # CentOS 

--------------- On Debian and Ubuntu --------------- 
$ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server 

--------------- On openSUSE --------------- 
# zypper update && zypper install mariadb mariadb-tools # openSUSE

Merk at i Ubuntu vil du bli bedt om å angi et passord for RDBMS-rotbrukeren.

Når pakkene ovenfor er installert, sørg for at databasetjenesten kjører og er aktivert for å starte ved oppstart (i CentOS og openSUSE må du utføre denne operasjonen manuelt, mens i Ubuntu vil installasjonsprosessen allerede ha tatt hånd om det for deg):

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# systemctl start mariadb && systemctl enable mariadb 

--------------- On openSUSE --------------- 
# systemctl start mysql && systemctl enable mysql

Kjør deretter mysql_secure_installation-skriptet. Denne prosessen lar deg:

  1. sett/tilbakestill passordet for RDBMS-rotbrukeren
  2. fjern anonyme pålogginger (slik gjør det bare mulig for brukere med en gyldig konto å logge på RDBMS)
  3. deaktiver rottilgang for andre maskiner enn localhost
  4. fjern testdatabasen (som alle kan få tilgang til)
  5. aktiver endringene knyttet til 1 til 4.

For en mer detaljert beskrivelse av denne prosessen kan du se etter installasjonsdelen i Installer MariaDB-databasen i RHEL/CentOS/Fedora og Debian/Ubuntu.

Konfigurere MariaDB Server

Standard konfigurasjonsalternativer leses fra følgende filer i gitt rekkefølge: /etc/mysql/my.cnf, /etc/my.cnf og ~ /.my.cnf.

Oftest eksisterer bare /etc/my.cnf. Det er på denne filen vi vil angi serveromfattende innstillinger (som kan overstyres med de samme innstillingene i ~/.my.cnf for hver bruker).

Det første vi må merke oss om my.cnf er at innstillingene er organisert i kategorier (eller grupper) der hvert kategorinavn er omsluttet av firkantede parenteser.

Serversystemkonfigurasjoner er gitt i delen [mysqld], hvor du vanligvis bare finner de to første innstillingene i tabellen nedenfor. Resten er andre ofte brukte alternativer (der det er angitt, vil vi endre standardverdien med en egendefinert av våre valg):

Vi vil endre dette for å instruere tjenesten til å bare lytte på hovedadressen (192.168.0.13):

bind_address=192.168.0.13 bind_address=0.0.0.0 porten representerer porten der databaseserveren skal lytte.

Vi vil erstatte standardverdien (3306) med 20500 (men vi må sørge for at ingenting annet bruker den porten):
port=20500

Selv om noen mennesker vil hevde at sikkerhet gjennom uklarhet ikke er god praksis, er det å endre standard applikasjonsporter for høyere en rudimentær – men effektiv – metode for å motvirke portskanning. port=3306 innodb_buffer_pool_size er bufferpoolen (i byte) i minnet som er tildelt for data og indekser som brukes ofte når du bruker Innodb (som er standard i MariaDB) eller XtraDB som lagringsmotor.

Vi vil erstatte standardverdien med 256 MB:

innodb_buffer_pool_size=256M innodb_buffer_pool_size=134217728 skip_name_resolve indikerer om vertsnavn vil bli løst eller ikke på innkommende tilkoblinger . Hvis satt til 1, som vi vil gjøre i denne veiledningen, kun IP-adresser.

Med mindre du krever vertsnavn for å bestemme tillatelser, er det tilrådelig å deaktivere denne variabelen (for å øke hastigheten på tilkoblinger og spørringer) ved å sette verdien til 1:

skip_name_resolve=1 skip_name_resolve=0 query_cache_size representerer størrelsen (i byte) som er tilgjengelig for spørringen cache på disk, hvor resultatene av SELECT-spørringer lagres for fremtidig bruk når en identisk spørring (til samme database og med samme protokoll og samme tegnsett) utføres.

Du bør velge en spørringsbufferstørrelse som samsvarer med dine behov basert på 1) antall repeterende spørringer og 2) det omtrentlige antallet poster som de gjentatte spørringene forventes å returnere. Vi setter denne verdien til 100 MB for tiden:

query_cache_size=100M query_cache_size=0 (som betyr at den er deaktivert som standard) max_connections er det maksimale antallet samtidige klienttilkoblinger til serveren . Vi setter denne verdien til 30:
max_connections=30Hver tilkobling vil bruke en tråd, og vil dermed forbruke minne. Ta dette i betraktning når du angir max_connections. max_connections=151 thread_cache_size indikerer antall tråder som serveren tildeler for gjenbruk etter at en klient kobler fra og frigjør tråd(er) tidligere i bruk. I denne situasjonen er det billigere (ytelsesmessig) å gjenbruke en tråd enn å instansiere en ny.

Igjen, dette avhenger av antall tilkoblinger du forventer. Vi kan trygt sette denne verdien til halvparten av antallet max_connections:

thread_cache_size=15 thread_cache_size=0 (deaktivert som standard) I CentOS må vi fortelle SELinux å la MariaDB lytte på en ikke-standard port (20500) før du starter tjenesten på nytt:

# yum install policycoreutils-python
# semanage port -a -t mysqld_port_t -p tcp 20500

Start deretter MariaDB-tjenesten på nytt.

Tuning MariaDB-ytelse

For å hjelpe oss med å sjekke og justere konfigurasjonen i henhold til våre spesifikke behov, kan vi installere mysqltuner (et skript som vil gi forslag for å forbedre ytelsen til databaseserveren vår og øke stabiliteten):

# wget https://github.com/major/MySQLTuner-perl/tarball/master
# tar xzf master

Bytt deretter katalog til mappen hentet fra tarballen (den eksakte versjonen kan variere i ditt tilfelle):

# cd major-MySQLTuner-perl-7dabf27

og kjør den (du vil bli bedt om å skrive inn legitimasjonen til din administrative MariaDB-konto)

# ./mysqltuner.pl

Utgangen av skriptet er i seg selv veldig interessant, men la oss hoppe til bunnen der variablene som skal justeres er oppført med anbefalt verdi:

query_cache_type-innstillingen indikerer om spørringsbufferen er deaktivert (0) eller aktivert (1). I dette tilfellet råder mysqltuner oss til å deaktivere den.

Så hvorfor anbefales vi å deaktivere den nå? Årsaken er at spørringsbufferen er nyttig for det meste i scenarier med høy lesing/lav skriving (noe som ikke er vårt tilfelle, siden vi nettopp installerte databaseserveren).

ADVARSEL: Før du gjør endringer i konfigurasjonen av en produksjonsserver, oppfordres du sterkt til å konsultere en ekspertdatabaseadministrator for å sikre at en anbefaling gitt av mysqltuner ikke vil påvirke en eksisterende innstilling negativt.

Sammendrag

I denne artikkelen har vi forklart hvordan du konfigurerer en MariaDB-databaseserver etter at vi har installert og sikret den. Konfigurasjonsvariablene som er oppført i tabellen ovenfor er bare noen få innstillinger som du kanskje vil vurdere når du klargjør serveren for bruk eller når du justerer den senere. Se alltid til den offisielle MariaDB-dokumentasjonen før du gjør endringer, eller se våre MariaDB Performance tuning-tips:

Som alltid, ikke nøl med å gi oss beskjed hvis du har spørsmål eller kommentarer om denne artikkelen. Er det noen andre serverinnstillinger du liker å bruke? Del gjerne med resten av fellesskapet ved å bruke kommentarskjemaet nedenfor.