Sådan installeres og konfigureres MariaDB på Ubuntu & CentOS

Lad os lære, hvordan du installerer og konfigurerer MariaDB, et populært open source MySQL Relational Database Management System (RDBMS).

Det er fællesskabsudviklet og har mulighed for kommerciel support. Det er meningen, at MariaDB skal forblive meget kompatibel med MySQL, selvom der er nogle afvigelser.

I denne artikel dækker vi installationen og konfigurationen af ​​MariaDB på Ubuntu 20.x og CentOS 7.x/8.x og vil til sidst gennemgå nogle bedste praksisser for at sikre og forbedre dens ydeevne.

MariaDB på Ubuntu

På Ubuntu 20.x er MariaDB tilgængelig direkte fra dets standardlagre. Vi bruger apt til denne opgave.

Første opdatering af apt repositories data ved:

$ sudo apt update

Når lagerdataene er opdateret, skal du køre:

$ sudo apt install mariadb-server

Dette vil installere MariaDB og nødvendige pakker. Bekræft med ‘Y’ for eventuelle prompter, du kan få under udførelsen af ​​den forrige kommando.

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

MariaDB på CentOS 7.x

For CentOS 7.x er den tilgængelige MariaDB-version fra standard CentOS-lageret 5.x. Vi skal installere den seneste tilgængelige version af MariaDB.

Til dette skal vi først konfigurere et ekstra yum-lager. MariaDB giver en nem måde at bruge mariadb_repo_setup scriptet på. For at få opsætningen af ​​lageret skal du køre følgende kommandoer på dit CentOS 7.x-system:

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

Dette script opsætter det nødvendige yum-lager til automatisk at installere MariaDBs seneste version. På tidspunktet for skrivning af denne artikel er den 10.x.

Eller hvis du vil gå den manuelle vej, kan du konfigurere et manuelt yum-lager ved at oprette en ny repo-fil som:

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

Tilføj derefter følgende detaljer til repo-filen og gem den:

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

Nu for at installere MariaDB, kør nedenstående kommando:

$ sudo yum install MariaDB-server

Bekræft eventuelle prompter, der vises under installationen, ved at indtaste ‘y’:

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

Dette fuldender installationen af ​​MariaDB-serveren og afhængige pakker.

MariaDB på CentOS 8.x

For CentOS 8.x er den tilgængelige version fra standardlagre 10.3 eller nyere. Vi kan installere MariaDB direkte ved hjælp af DNF-kommandoen:

sudo dnf install mariadb-server

Ellers for at få den seneste tilgængelige version, kan du følge den manuelle måde som angivet i det foregående afsnit for CentOS 7.x, og det burde få dig til at arbejde.

Starter MariaDB

På en Ubuntu-maskine vil du have MariaDB-tjenesten kørende lige efter installationen, mens for CentOS skal vi manuelt aktivere og starte relevante tjenester.

Under alle omstændigheder, for Ubuntu såvel som CentOS, skal du køre nedenstående kommandoer for at få MariaDB-tjenesten startet, aktiveret ved opstart samt verificere den:

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

Produktion:

$ 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 af MariaDB

Som det første trin efter installationen af ​​MariaDB bør vi sikre dens udrulning ved at indstille en root-adgangskode, deaktivere eksternt root-login, fjerne testdatabasen samt anonyme brugere og til sidst genindlæse privilegier.

  Sådan bruges Tap To Wake on iPhone X

Kør nedenstående kommando for at hærde MariaDB:

$ sudo mysql_secure_installation

Du kan følge standardprompterne med foreslåede handlinger, medmindre du har et specifikt krav om at afvige.

Produktion:

$ 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 vil vi bruge systemets godkendelse, så har ikke opsat en separat root-adgangskode til MariaDB, da den allerede er sikker. Hvis du har brug for det, kan du også altid oprette en separat root-adgangskode.

  Bliver du svimmel af at se på din telefon? Deaktiver animationer

Opsætningsvalidering

For at bekræfte din MariaDB-opsætning skal du køre (angiv den adgangskode, du konfigurerede, mens du kører mysql_secure_installation, eller brug dit systems root-legitimationsoplysninger, hvis den blev sprunget over på det tidspunkt):

$ 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 oprette en ny admin-konto i stedet for root som vist nedenfor (ændre værdien af ​​adgangskoden med den, du har til hensigt at indstille 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
$

Bekræft adgang med ny administratorbruger som (indtast adgangskoden som angivet i forrige trin):

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

Efter installation og sikring af din MariaDB-opsætning, bør du tage handling for at justere dit OS og din database for optimal ydeevne. Denne justering vil variere baseret på din systemkonfiguration, brugstype, antal brugere og en række andre faktorer.

Fra et OS-perspektiv kan nogle systemparametre konfigureres til MariaDB, som vi vil diskutere nu.

Linux Kernel Settings – IO Scheduler

Anbefalede IO-planlæggere til MariaDB er noop og deadline. For at kontrollere, brug cat /sys/block/${DEVICE}/queue/scheduler

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

En midlertidig ændring kan udføres ved at udstede følgende kommando, og dens virkning, hvis nogen, vil være øjeblikkelig på systemets ydeevne:

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

For at gøre det vedvarende, skal du konfigurere det i GRUBs konfigurationsfil som vist nedenfor i /etc/default/grub , genopbygge GRUB og genstarte systemet.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Ressourcegrænser – Åbne filers grænse

Linux begrænser normalt antallet af filbeskrivelser, hver proces kan åbne. For et aktivt DB-system kan denne grænse nemt overskride eller påvirke ydeevnen. På mange Linux-systemer er denne grænse som standard 1024. Derudover er der mulighed for bløde og hårde grænser.

For at øge grænsen kan du tilføje følgende linjer i din /etc/security/limits.conf:

mysql soft nofile 65535
mysql hard nofile 65535

En systemgenstart vil være nødvendig efter hvilken mysql-bruger ville være i stand til at se og bruge de nye grænser. Dette kan kontrolleres som:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Ressourcegrænser – Kernefilstørrelse

Linux begrænser størrelsen af ​​kernefiler som set i det foregående tilfælde. Igen har dette en blød og hård grænse, og som standard er den bløde grænse sat til 0, hvilket effektivt deaktiverer generering af kernefiler. For at tillade kernefilgenerering (andre konfigurationer, der er nødvendige for generering af kernedump), kan vi øge denne værdi i /etc/security/limits.conf som:

mysql soft core unlimited
mysql hard core unlimited

Efter systemets genstart vil mysql-brugeren være i stand til at se de nye værdier ved hjælp af ulimit-kommandoen som:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

Konfigurer Swappiness

  Sådan omarrangeres widgets i meddelelsescenteret på Mac

Swappiness-værdi i Linux bestemmer, hvor sandsynligt det er, at systemet skifter en side fra hukommelsen til at bytte plads, der er konfigureret på systemet. Normalt er standardværdien sat til 60, som kan kontrolleres fra:

sysctl vm.swappiness

Dens værdi kan variere fra 0 til 100, hvor en lavere værdi betyder en lavere sandsynlighed for at bytte. På en databaseserver, der kun kører MariaDB, vil vi gerne reducere denne værdi til 0 for at undgå at bruge swap så meget som muligt. Bemærk her, at indstilling af swappiness-værdien på 0 skal gøres med forsigtighed i betragtning af andre systemdesignfaktorer, da i tilfælde af høj hukommelsesbrug eller I/O-belastning, er der en chance for, at kernen (Out Of Memory) processen dræber processen.

Da en lav swappiness-indstilling anbefales til databasearbejdsbelastninger og som sådan for MariaDB-databaser, anbefales det at indstille swappiness til en værdi på 1. Du kan tilføje nedenstående linje i /etc/sysctl.conffor at gøre denne ændring vedvarende:

vm.swappiness = 1

Ændringerne træder i kraft efter systemgenstart, selvom du altid kan gøre det på forhånd ved hjælp af sysctl-kommandoen:

sysctl -w vm.swappiness=1

Filsystemoptimeringer

For MariaDB betragtes de bedste Linux-filsystemer generelt som ext4, XFS og Btrfs, som alle er inkluderet i mainline Linux-kernen og er bredt understøttet. Disse filsystemer er tilgængelige på de fleste Linux-distributioner. Hvert filsystem har sine unikke egenskaber og funktioner og kan vælges baseret på krav efter korrekt gennemgang.

Desuden er det usandsynligt, at du skal registrere filadgangstid på en databaseserver. Vi kan deaktivere dette for at forbedre ydeevnen. Du kan montere det relevante filsystem med noatime-optionen eller tilføje det i monteringsmulighederne i filen /etc/fstab for at gøre det vedvarende.

DB optimering

Der er flere tunables internt i MariaDB-funktionen, som kan tilpasses baseret på ens krav og behov.

Vi vil diskutere et par af dem her.

MariaDB er for det meste konfigureret af filen my.cnf.

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

/etc/mysql/my.cnf

Mens den er på CentOS, er den placeret på:

/etc/my.cnf

Der kan henvises til detaljeret dokumentation om, hvilke variabler der er tilgængelige for tuning i konfigurationsfilen her.

Meget afhænger også af den type motor, der bruges af MariaDB, nemlig MyISAM og InnoDB eller XtraDB. Begge har deres egne sæt fordele og ulemper, og valget afhænger af database- og applikationskrav.

Vi bør indstille innodb_buffer_pool_size til omkring 80% af din hukommelse. Dette sikrer, at 80 % af dit arbejdssæt er i hukommelsen.

Nogle af de andre vigtige indstillelige parametre 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 tuning af InnoDB- eller XtraDB-variabler kan findes her. Henvis til dette guide for alle tilgængelige indstillingsmuligheder for MariaDB.

Hvis du er interesseret, så tjek disse ressourcer for at lære SQL og NoSQL.

Konklusion

MariaDB er et af de populære valg, når det kommer til relations-DBMS. At være open source med et mangfoldigt fællesskab tilføjer yderligere til det.

For at lære mere, se dens dokumentation som omfatter emner som grundlæggende SQL, migrering, MariaDB-administration, høj tilgængelighed, ydelsesjustering, storage-motorer, programmering og tilpasning. Du vil måske også deaktivere binær logning, hvis du ikke bruger en klynge.