sql >> Databasteknik >  >> RDS >> MariaDB

Hur man installerar, säkrar och prestandajustering av MariaDB Database Server

En databasserver är en kritisk komponent i den nätverksinfrastruktur som behövs för dagens applikationer. Utan möjligheten att lagra, hämta, uppdatera och radera data (vid behov) blir användbarheten och omfattningen av webb- och stationära appar mycket begränsad.

Att veta hur man installerar, hanterar och konfigurerar en databasserver (så att den fungerar som förväntat) är dessutom en väsentlig färdighet som varje systemadministratör måste ha.

I den här artikeln kommer vi kortfattat gå igenom hur man installerar och säkrar en MariaDB-databasserver och sedan kommer vi att förklara hur man konfigurerar den.

Installera och säkra en MariaDB-server

I CentOS 7.x , MariaDB ersatte MySQL, som fortfarande kan hittas i Ubuntu (tillsammans med MariaDB). Detsamma gäller för openSUSE .

För korthetens skull kommer vi bara att använda MariaDB i denna handledning, men observera att förutom att ha olika namn och utvecklingsfilosofier, både Relational DataBase Management Systems (RDBMS kort sagt) är nästan identiska.

Det betyder att kommandona på klientsidan är desamma på båda MySQL och MariaDB , och konfigurationsfilerna namnges och finns på samma platser.

För att installera MariaDB, gö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

Observera att i Ubuntu , kommer du att bli ombedd att ange ett lösenord för RDBMS-rotanvändaren.

När ovanstående paket har installerats, se till att databastjänsten körs och har aktiverats för att starta vid uppstart (i CentOS och openSUSE du måste utföra den här operationen manuellt, medan i Ubuntu installationsprocessen har redan tagit hand om det åt dig):

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

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

Kör sedan mysql_secure_installation manus. Denna process låter dig:

  1. ställ in/återställ lösenordet för RDBMS-rotanvändaren
  2. ta bort anonyma inloggningar (så att endast användare med ett giltigt konto kan logga in på RDBMS)
  3. inaktivera root-åtkomst för andra maskiner än localhost
  4. ta bort testdatabasen (som alla kan komma åt)
  5. aktivera ändringarna som är kopplade till 1 till 4.

För en mer detaljerad beskrivning av denna process, kan du se avsnittet Post installation i Installera MariaDB Database i RHEL/CentOS/Fedora och Debian/Ubuntu.

Konfigurera MariaDB Server

Standardkonfigurationsalternativen läses från följande filer i angiven ordning:/etc/mysql/my.cnf , /etc/my.cnf och ~/.my.cnf .

Oftast bara /etc/my.cnf existerar. Det är på den här filen som vi kommer att ställa in serveromfattande inställningar (som kan åsidosättas med samma inställningar i ~/.my.cnf för varje användare).

Det första vi måste notera om my.cnf är att inställningarna är organiserade i kategorier (eller grupper) där varje kategorinamn omges av hakparenteser.

Serversystemkonfigurationer ges i [mysqld] avsnitt, där du vanligtvis bara hittar de två första inställningarna i tabellen nedan. Resten är andra ofta använda alternativ (där det anges kommer vi att ändra standardvärdet med ett anpassat som vi väljer):

Inställning och beskrivning Standardvärde
datakatalog är katalogen där datafilerna lagras. datadir=/var/lib/mysql
socket indikerar namnet och platsen för socketfilen som används för lokala klientanslutningar. Tänk på att en socket-fil är en resurs som används för att skicka information mellan applikationer. socket=/var/lib/mysql/mysql.sock
bind_address är adressen där databasservern kommer att lyssna på TCP/IP-anslutningar. Om du behöver att din server ska lyssna på mer än en IP-adress, utelämna denna inställning (0.0.0.0 vilket betyder att den kommer att lyssna på alla IP-adresser som tilldelats denna specifika värd).

Vi kommer att ändra detta för att instruera tjänsten att endast lyssna på sin huvudadress (192.168.0.13):

bind_address=192.168.0.13

bind_adress=0.0.0.0
porten representerar porten där databasservern kommer att lyssna.

Vi kommer att ersätta standardvärdet (3306) med 20500 (men vi måste se till att inget annat använder den porten):
port=20500

Även om vissa människor kommer att hävda att säkerhet genom dunkel inte är bra praxis, är att ändra standardapplikationsportarna för högre en rudimentär -men effektiv- metod för att motverka portskanning.

port=3306
innodb_buffer_pool_size är buffertpoolen (i byte) av minne som allokeras för data och index som nås ofta när man använder Innodb (vilket är standard i MariaDB) eller XtraDB som lagringsmotor.

Vi kommer att ersätta standardvärdet med 256 MB:

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728
skip_name_resolve anger om värdnamn kommer att lösas eller inte på inkommande anslutningar. Om satt till 1, som vi kommer att göra i den här guiden, endast IP-adresser.

Om du inte kräver värdnamn för att bestämma behörigheter, är det lämpligt att inaktivera denna variabel (för att snabba upp anslutningar och frågor) genom att sätta dess värde till 1:

skip_name_resolve=1

skip_name_resolve=0
query_cache_size representerar storleken (i byte) som är tillgänglig för frågecachen på disken, där resultaten av SELECT-frågor lagras för framtida användning när en identisk fråga (till samma databas och med samma protokoll och samma teckenuppsättning) utförs.

Du bör välja en frågecachestorlek som matchar dina behov baserat på 1) antalet repetitiva frågor och 2) det ungefärliga antalet poster som de repetitiva frågorna förväntas returnera. Vi kommer att ställa in detta värde till 100 MB för tillfället:

query_cache_size=100M

query_cache_size=0 (vilket betyder att den är inaktiverad som standard)
max_connections är det maximala antalet samtidiga klientanslutningar till servern. Vi kommer att ställa in detta värde till 30:
max_connections=30Varje anslutning kommer att använda en tråd och kommer därför att förbruka minne. Ta hänsyn till detta när du ställer in max_connections.
max_connections=151
thread_cache_size anger antalet trådar som servern allokerar för återanvändning efter att en klient kopplat från och frigör tråd(ar) som tidigare använts. I den här situationen är det billigare (prestandamässigt) att återanvända en tråd än att instansiera en ny.

Återigen, detta beror på antalet anslutningar du förväntar dig. Vi kan säkert ställa in detta värde till hälften av antalet max_connections:

thread_cache_size=15

thread_cache_size=0 (inaktiverad som standard)

I CentOS , måste vi berätta för SELinux för att tillåta MariaDB för att lyssna på en icke-standardport (20500 ) innan du startar om tjänsten:

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

Starta sedan om MariaDB-tjänsten.

Justera MariaDB-prestanda

För att hjälpa oss att kontrollera och justera konfigurationen enligt våra specifika behov kan vi installera mysqltuner (ett skript som ger förslag för att förbättra prestandan för vår databasserver och öka dess stabilitet):

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

Byt sedan katalog till mappen som extraherats från tarballen (den exakta versionen kan skilja sig åt i ditt fall):

# cd major-MySQLTuner-perl-7dabf27

och kör det (du kommer att bli ombedd att ange autentiseringsuppgifterna för ditt administrativa MariaDB-konto)

# ./mysqltuner.pl

Utdata från skriptet är i sig mycket intressant, men låt oss hoppa till botten där variablerna som ska justeras är listade med det rekommenderade värdet:

query_cache_type inställning anger om frågecachen är inaktiverad (0) eller aktiverat (1) . I det här fallet, mysqltuner råder oss att inaktivera det.

Så varför rekommenderas vi att inaktivera det nu? Anledningen är att frågecachen är användbar mest i scenarier med hög läsning/låg skrivning (vilket inte är vårt fall, eftersom vi precis installerade databasservern).

VARNING :Innan du gör ändringar i konfigurationen av en produktionsserver, uppmuntras du starkt att konsultera en expertdatabasadministratör för att säkerställa att en rekommendation från mysqltuner inte kommer att påverka en befintlig inställning negativt.

Sammanfattning

I den här artikeln har vi förklarat hur man konfigurerar en MariaDB-databasserver efter att vi har installerat och säkrat den. Konfigurationsvariablerna som listas i tabellen ovan är bara några inställningar som du kanske vill överväga när du förbereder servern för användning eller när du ställer in den senare. Se alltid den officiella MariaDB-dokumentationen innan du gör ändringar eller se våra MariaDB Performance tuning-tips:

Don' t fröken: 15 användbara tips för MariaDB-prestandajustering och optimering

Som alltid, tveka inte att meddela oss om du har några frågor eller kommentarer om den här artikeln. Finns det några andra serverinställningar du vill använda? Dela gärna med resten av communityn genom att använda kommentarsformuläret nedan.

Bli en Linux-certifierad systemadministratör
  1. Vad ska man göra med nollvärden vid modellering och normalisering?

  2. SIGN() Exempel i SQL Server

  3. Betyder utvecklande kontaktinformation att du ändrar din databas?

  4. Vilka är skillnaderna mellan ett klustrat och ett icke-klustrat index?