Sådan installeres, sikres og præstationsindstilling af MariaDB-databaseserver


En databaseserver er en kritisk komponent i netværksinfrastrukturen, der er nødvendig for nutidens applikationer. Uden evnen til at gemme, hente, opdatere og slette data (når det er nødvendigt) bliver nytten og omfanget af web- og desktop-apps meget begrænset.

Derudover er det vigtigt at kende, hvordan man installerer, administrerer og konfigurerer en databaseserver (så den fungerer som forventet), som enhver systemadministrator skal have.

I denne artikel vil vi kort gennemgå, hvordan du installerer og sikrer en MariaDB-databaseserver, og derefter forklarer vi, hvordan du konfigurerer den.

Installation og sikring af en MariaDB-server

I CentOS 7.x erstattede MariaDB MySQL, som stadig kan findes i Ubuntu (sammen med MariaDB). Det samme gælder for openSUSE.

For kortfattethed bruger vi kun MariaDB i denne vejledning, men bemærk at udover at have forskellige navne og udviklingsfilosofier er begge Relational DataBase Management Systems (forkortet RDBMS'er) næsten identiske.

Dette betyder, at klientsides kommandoer er de samme på både MySQL og MariaDB, og konfigurationsfilerne er navngivet og placeret de samme steder.

For at installere MariaDB skal du gøre:

--------------- 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

Bemærk, at i Ubuntu bliver du bedt om at indtaste en adgangskode til RDBMS-rodbrugeren.

Når ovenstående pakker er installeret, skal du sørge for, at databasetjenesten kører og er blevet aktiveret til start ved opstart (i CentOS og openSUSE skal du udføre denne operation manuelt, mens installationsprocessen i Ubuntu allerede har taget sig af det for dig):

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

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

Kør derefter mysql_secure_installation scriptet. Denne proces giver dig mulighed for at:

  1. indstil/nulstil adgangskoden til RDBMS-rodbrugeren
  2. fjern anonyme logins (hvilket gør det kun muligt for brugere med en gyldig konto at logge ind på RDBMS)
  3. deaktiver rodadgang for andre maskiner end localhost
  4. fjern testdatabasen (som alle kan få adgang til)
  5. aktiver ændringer, der er knyttet til 1 til 4.

For en mere detaljeret beskrivelse af denne proces kan du henvise til afsnittet Efter installation i Install MariaDB Database i RHEL/CentOS/Fedora og Debian/Ubuntu.

Konfiguration af MariaDB Server

Standardkonfigurationsindstillingerne læses fra følgende filer i den givne rækkefølge: /etc/mysql/my.cnf , /etc/my.cnf og ~ /.my.cnf .

Ofte findes der kun /etc/my.cnf . Det er på denne fil, at vi indstiller serverindstillingerne (som kan tilsidesættes med de samme indstillinger i ~/.my.cnf for hver bruger).

Den første ting, vi skal bemærke om my.cnf , er, at indstillingerne er organiseret i kategorier (eller grupper), hvor hvert kategorinavn er lukket med firkantede parenteser.

Serversystemkonfigurationer er angivet i [mysqld] sektionen, hvor du typisk kun finder de to første indstillinger i nedenstående tabel. Resten er andre ofte anvendte indstillinger (hvor det er angivet, ændrer vi standardværdien med en brugerdefineret en af vores valg):

Vi ændrer dette for at instruere tjenesten om kun at lytte til dens hovedadresse (192.168.0.13):

bind_adresse = 192.168.0.13 bind_address = 0.0.0.0 port repræsenterer den port, hvor databaseserveren skal lytte.

Vi erstatter standardværdien (3306) med 20500 (men vi skal sørge for, at intet andet bruger den port):
port = 20500

Mens nogle mennesker vil hævde, at sikkerhed gennem uklarhed ikke er god praksis, er det en rudimentær - endnu effektiv - metode at ændre standardapplikationsporte til højere. port = 3306 innodb_buffer_pool_size er bufferpuljen (i byte) i hukommelsen, der er allokeret til data og indekser, der ofte åbnes, når du bruger Innodb (som er standard i MariaDB) eller XtraDB som lagermotor.

Vi erstatter standardværdien med 256 MB:

innodb_buffer_pool_size = 256M innodb_buffer_pool_size = 134217728 skip_name_resolve angiver, om værtsnavne løses eller ikke ved indgående forbindelser. Hvis indstillet til 1, som vi vil gøre i denne vejledning, kun IP-adresser.

Medmindre du har brug for værtsnavne for at bestemme tilladelser, anbefales det at deaktivere denne variabel (for at fremskynde forbindelser og forespørgsler) ved at indstille dens værdi til 1:

skip_name_resolve = 1 skip_name_resolve = 0 query_cache_size repræsenterer den størrelse (i byte), der er tilgængelig for forespørgselens cache på disken, hvor resultaterne af SELECT-forespørgsler gemmes til fremtidig brug, når en identisk forespørgsel (til den samme database og bruger den samme protokol og det samme tegnsæt) udføres.

Du skal vælge en cache-størrelse for forespørgsel, der passer til dine behov, baseret på 1) antallet af gentagne forespørgsler og 2) det omtrentlige antal poster, som de gentagne forespørgsler forventes at returnere. Vi indstiller denne værdi indtil videre til 100 MB:

query_cache_size = 100 mio. query_cache_size = 0 (hvilket betyder, at den er deaktiveret som standard) max_connections er det maksimale antal samtidige klientforbindelser til serveren. Vi indstiller denne værdi til 30:
max_connections = 30Hver forbindelse bruger en tråd og forbruger således hukommelse. Tag denne kendsgerning i betragtning, mens du indstiller max_connections. max_connections = 151 thread_cache_size angiver antallet af tråde, som serveren tildeler til genbrug, når en klient afbryder og frigør tråd (er), der tidligere var i brug. I denne situation er det billigere (præstationsmæssigt) at genbruge en tråd end at starte en ny.

Igen afhænger dette af antallet af forbindelser, du forventer. Vi kan sikkert indstille denne værdi til halvdelen af antallet af max_connections:

thread_cache_size = 15 thread_cache_size = 0 (deaktiveret som standard) I CentOS bliver vi nødt til at fortælle SELinux at tillade MariaDB at lytte til en ikke-standard port (20500) inden genstart af tjenesten:

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

Genstart derefter MariaDB-tjenesten.

Tuning af MariaDB Performance

For at hjælpe os med at kontrollere og indstille konfigurationen efter vores specifikke behov kan vi installere mysqltuner (et script, der giver forslag til at forbedre vores databaseservers ydeevne og øge dens stabilitet):

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

Skift derefter bibliotek til den mappe, der er ekstraheret fra tarballen (den nøjagtige version kan variere i dit tilfælde):

# cd major-MySQLTuner-perl-7dabf27

og kør det (du bliver bedt om at indtaste legitimationsoplysningerne for din administrative MariaDB-konto)

# ./mysqltuner.pl

Outputtet af scriptet er i sig selv meget interessant, men lad os springe til bunden, hvor de variabler, der skal justeres, er angivet med den anbefalede værdi:

Indstillingen query_cache_type angiver, om forespørgselscachen er deaktiveret (0) eller aktiveret (1). I dette tilfælde råder mysqltuner os til at deaktivere det.

Så hvorfor rådes det til at deaktivere det nu? Årsagen er, at forespørgselscachen hovedsagelig er nyttig i scener med høj læsning/lav skrivning (hvilket ikke er tilfældet, da vi lige har installeret databaseserveren).

ADVARSEL: Inden du foretager ændringer i konfigurationen af en produktionsserver, opfordres du stærkt til at konsultere en ekspertdatabase-administrator for at sikre, at en anbefaling fra mysqltuner ikke påvirker en eksisterende indstilling negativt.

Resumé

I denne artikel har vi forklaret, hvordan man konfigurerer en MariaDB-databaseserver, efter at vi har installeret og sikret den. De konfigurationsvariabler, der er anført i tabellen ovenfor, er kun et par indstillinger, som du måske vil overveje, når du forbereder serveren til brug eller når du indstiller den senere. Se altid den officielle MariaDB-dokumentation, før du foretager ændringer, eller se vores MariaDB Performance tuning tips:

Som altid, tøv ikke med at fortælle os, hvis du har spørgsmål eller kommentarer til denne artikel. Er der andre serverindstillinger, du gerne vil bruge? Del gerne med resten af samfundet ved hjælp af nedenstående kommentarformular.