Hvordan installere og konfigurere MariaDB på Ubuntu og CentOS

La oss lære hvordan du installerer og konfigurerer MariaDB, et populært MySQL Relational Database Management System (RDBMS) med åpen kildekode.

Det er fellesskapsutviklet og har mulighet for kommersiell støtte. MariaDB har vært ment å forbli svært kompatibel med MySQL, selv om det er noen avvik.

I denne artikkelen vil vi dekke installasjonen og konfigurasjonen av MariaDB på Ubuntu 20.x og CentOS 7.x/8.x, og på slutten vil vi gjennomgå noen beste fremgangsmåter for å sikre og forbedre ytelsen.

MariaDB på Ubuntu

På Ubuntu 20.x er MariaDB tilgjengelig direkte fra standardlagrene. Vi bruker apt til denne oppgaven.

Oppdater først apt repositories-data av:

$ sudo apt update

Når depotdata er oppdatert, kjør:

$ sudo apt install mariadb-server

Dette vil installere MariaDB og nødvendige pakker. Bekreft med «Y» for eventuelle spørsmål du kan få under utførelsen av forrige kommando.

Do you want to continue? [Y/n] Y

MariaDB på CentOS 7.x

For CentOS 7.x er den tilgjengelige MariaDB-versjonen fra standard CentOS-depot 5.x. Vi skal installere den siste tilgjengelige versjonen av MariaDB.

For dette må vi først konfigurere et ekstra yum-depot. MariaDB gir en enkel måte å bruke mariadb_repo_setup-skriptet på. For å få oppsett av depotet, kjør følgende kommandoer på CentOS 7.x-systemet:

$ sudo yum install wget
$ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ chmod +x mariadb_repo_setup
$ sudo ./mariadb_repo_setup

Dette skriptet vil sette opp det nødvendige yum-depotet for å installere MariaDBs nyeste versjon automatisk. På tidspunktet for skriving av denne artikkelen er den 10.x.

Eller i tilfelle du vil gå den manuelle veien, kan du konfigurere et manuelt yum-lager ved å opprette en ny repo-fil som:

$ sudo vi /etc/yum.repos.d/MariaDB.repo

Legg deretter til følgende detaljer i repo-filen og lagre den:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Nå for å installere MariaDB, kjør kommandoen nedenfor:

$ sudo yum install MariaDB-server

Bekreft eventuelle spørsmål som vises under installasjonen ved å skrive inn «y»:

Is this ok [y/d/N]: y

Dette fullfører installasjonen av MariaDB-serveren og avhengige pakker.

MariaDB på CentOS 8.x

For CentOS 8.x er den tilgjengelige versjonen fra standardlagre 10.3 eller nyere. Vi kan installere MariaDB direkte ved å bruke DNF-kommandoen:

sudo dnf install mariadb-server

Ellers for å få den siste tilgjengelige versjonen, kan du følge den manuelle måten som gitt i forrige seksjon for CentOS 7.x, og det burde få deg til å jobbe.

Starter MariaDB

På en Ubuntu-maskin vil du ha MariaDB-tjenesten kjørende rett etter installasjonen, mens for CentOS må vi manuelt aktivere og starte relevante tjenester.

I alle fall, for Ubuntu så vel som CentOS, kjør kommandoene nedenfor for å starte MariaDB-tjenesten, aktivert ved oppstart, samt verifisere den:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service

Produksjon:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
$ sudo systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Thu 2020-12-31 13:20:04 IST; 13s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 13521 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─13521 /usr/sbin/mariadbd

Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: 10.5.8 started; log sequence number 45118; transaction id 20
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Buffer pool(s) load completed at 201231 13:20:04
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Server socket created on IP: '::'.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Reading of all Master_info entries succeeded
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Added new Master_info '' to hash table
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] /usr/sbin/mariadbd: ready for connections.
Dec 31 13:20:04 centos7vm mariadbd[13521]: Version: '10.5.8-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Dec 31 13:20:04 centos7vm systemd[1]: Started MariaDB 10.5.8 database server.
$

Sikring av MariaDB

Som det første trinnet etter installasjonen av MariaDB, bør vi sikre utplasseringen ved å sette et root-passord, deaktivere ekstern rotpålogging, fjerne testdatabasen så vel som anonyme brukere, og til slutt laste inn privilegier på nytt.

  Hvordan trygt dele WiFi-passord fra en iPhone

Kjør kommandoen nedenfor for å herde MariaDB:

$ sudo mysql_secure_installation

Du kan følge standardinstruksjonene med foreslåtte handlinger med mindre du har et spesifikt krav om å avvike.

Produksjon:

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
$

Her skal vi bruke systemets autentisering, så har ikke satt opp et eget root-passord for MariaDB, da det allerede er sikkert. Hvis du trenger det, kan du alltid sette opp et eget root-passord også.

  Reparer Disney Plus-lisensfeil for beskyttet innhold

Konfigurasjonsvalidering

For å bekrefte MariaDB-oppsettet ditt, kjør (spesifiser passordet du satte opp mens du kjører mysql_secure_installation eller, hvis du hoppet over på det tidspunktet, bruk systemets rotlegitimasjon):

$ sudo mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 53 min 17 sec

Threads: 2  Questions: 77  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

Du kan sette opp en ny admin-konto i stedet for roten som vist nedenfor (endre verdien på passordet med det du har tenkt å angi for admin-kontoen):

$ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 44
Server version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> exit
Bye
$

Bekreft tilgang med ny admin-bruker som (skriv inn passordet som angitt i forrige trinn):

$ mysqladmin -u admin -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 56 min 59 sec

Threads: 2  Questions: 83  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

OS-optimalisering

Etter installasjon og sikring av MariaDB-oppsettet, bør du iverksette tiltak for å justere operativsystemet og databasen for optimal ytelse. Denne justeringen vil variere basert på systemkonfigurasjonen din, brukstype, antall brukere og en rekke andre faktorer.

Fra et OS-perspektiv kan noen systemparametere konfigureres for MariaDB som vi skal diskutere nå.

Linux-kjerneinnstillinger – IO-planlegger

Anbefalte IO-planleggere for MariaDB er noop og deadline. For å sjekke, bruk cat /sys/block/${DEVICE}/queue/scheduler

$ sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
$

En midlertidig endring kan gjøres ved å utstede følgende kommando, og dens effekt, hvis noen, vil være umiddelbar på systemytelsen:

$ sudo echo noop > /sys/block/sda/queue/scheduler

For å gjøre det vedvarende, må du konfigurere det i GRUBs konfigurasjonsfil som vist nedenfor i /etc/default/grub , gjenoppbygge GRUB og starte systemet på nytt.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Ressursgrenser – grense for åpne filer

Linux begrenser vanligvis antall filbeskrivelser hver prosess kan åpne. For et aktivt DB-system kan denne grensen lett overskride eller påvirke ytelsen. På mange Linux-systemer er denne grensen standard til 1024. Videre er det en mulighet for myke og harde grenser.

For å øke grensen kan du legge til følgende linjer i /etc/security/limits.conf:

mysql soft nofile 65535
mysql hard nofile 65535

En omstart av systemet vil være nødvendig etter hvilken mysql-bruker vil kunne se og bruke de nye grensene. Dette kan sjekkes som:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Ressursgrenser – kjernefilstørrelse

Linux begrenser størrelsen på kjernefiler som vist i forrige tilfelle. Igjen har dette en myk og hard grense, og som standard er myk grense satt til 0 som effektivt deaktiverer kjernefilgenerering. For å tillate generering av kjernefil (andre konfigurasjoner som trengs for generering av kjernedump), kan vi øke denne verdien i /etc/security/limits.conf som:

mysql soft core unlimited
mysql hard core unlimited

Etter omstart av systemet, vil mysql-bruker kunne se de nye verdiene ved å bruke ulimit-kommandoen som:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

Konfigurer Swappiness

  10 beste arbeidsflytautomatiserings- og integrasjonsplattform for personlig eller bedrift

Bytteverdi i Linux avgjør hvor sannsynlig det er at systemet bytter en side fra minnet til å bytte plass konfigurert på systemet. Vanligvis er standardverdien satt til 60 som kan kontrolleres fra:

sysctl vm.swappiness

Verdien kan variere fra 0 til 100, der en lavere verdi betyr en lavere sannsynlighet for bytte. På en databaseserver som kun kjører MariaDB, ønsker vi å redusere denne verdien til 0 for å unngå å bruke swap så mye som mulig. Legg merke til her at innstilling av bytteverdi på 0 bør gjøres med forsiktighet med tanke på andre systemdesignfaktorer, ettersom i tilfelle høy minnebruk eller I/O-belastning, er det en sjanse for å drepe Out Of Memory (OOM) prosesser av kjernen.

Siden en lav swappiness-innstilling anbefales for databasearbeidsbelastninger og som sådan for MariaDB-databaser, anbefales det å sette swappiness til en verdi på 1. Du kan legge til under linjen i /etc/sysctl.conffor å gjøre denne endringen vedvarende:

vm.swappiness = 1

Endringene vil tre i kraft etter omstart av systemet, selv om du alltid kan gjøre det på forhånd ved å bruke sysctl-kommandoen:

sysctl -w vm.swappiness=1

Filsystemoptimaliseringer

For MariaDB blir de beste Linux-filsystemene generelt sett på som ext4, XFS og Btrfs som alle er inkludert i hovedlinje Linux-kjernen og støttes bredt. Disse filsystemene er tilgjengelige på de fleste Linux-distribusjoner. Hvert filsystem har sine unike egenskaper og funksjoner og kan velges basert på krav etter grundig gjennomgang.

Videre er det usannsynlig at du trenger å registrere filtilgangstid på en databaseserver. Vi kan deaktivere dette for å forbedre ytelsen. Du kan montere det relevante filsystemet med noatime-alternativet eller legge det til i monteringsalternativene i filen /etc/fstab for å gjøre det vedvarende.

DB-optimalisering

Det er flere tunables internt i MariaDB-funksjonen som kan tilpasses basert på ens krav og behov.

Vi vil diskutere noen av dem her.

MariaDB er for det meste konfigurert av my.cnf-filen.

På Ubuntu kan du finne my.cnf på:

/etc/mysql/my.cnf

Mens du er på CentOS, ligger den på:

/etc/my.cnf

Detaljert dokumentasjon på hvilke variabler som er tilgjengelige for tuning i konfigurasjonsfilen kan refereres fra her.

Mye avhenger også av typen motor som brukes av MariaDB, nemlig MyISAM og InnoDB eller XtraDB. Begge har sine egne sett med fordeler og ulemper, og valg av en avhenger av database- og applikasjonskrav.

Vi bør sette innodb_buffer_pool_size til omtrent 80 % av minnet ditt. Dette sikrer at 80 % av arbeidssettet ditt er i minnet.

Noen av de andre viktige justerbare parameterne er:

innodb_log_file_size
innodb_flush_method
innodb_thread_sleep_delay
innodb_adaptive_max_sleep_delay
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_max_dirty_pages_pct_lwm
innodb_read_ahead_threshold
innodb_thread_concurrency

Flere detaljer om innstilling av InnoDB- eller XtraDB-variabler kan bli funnet her. Viser til dette guide for alle tilgjengelige innstillingsalternativer for MariaDB.

Hvis du er interessert, sjekk ut disse ressursene for å lære SQL og NoSQL.

Konklusjon

MariaDB er et av de populære valgene når det gjelder relasjons-DBMS. Å være åpen kildekode med et mangfoldig fellesskap bidrar ytterligere til det.

For å lære mer, se den dokumentasjon som inkluderer emner som grunnleggende SQL, migrering, MariaDB-administrasjon, høy tilgjengelighet, ytelsesjustering, lagringsmotorer, programmering og tilpasning. Det kan også være lurt å deaktivere binær logging hvis du ikke bruker en klynge.