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.
Innholdsfortegnelse
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.
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å.
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
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.