A MariaDB telepítése és konfigurálása Ubuntu és CentOS rendszeren

Tanuljuk meg, hogyan kell telepíteni és konfigurálni a MariaDB-t, egy nyílt forráskódú, népszerű MySQL Relational Database Management System (RDBMS) rendszert.

Közösségi fejlesztésű, és lehetősége van kereskedelmi támogatásra. A MariaDB-t úgy tervezték, hogy továbbra is nagymértékben kompatibilis a MySQL-lel, bár vannak eltérések.

Ebben a cikkben a MariaDB telepítésével és konfigurálásával foglalkozunk Ubuntu 20.x és CentOS 7.x/8.x rendszeren, és a végén áttekintünk néhány bevált gyakorlatot a teljesítmény biztosítására és javítására.

MariaDB Ubuntun

Az Ubuntu 20.x rendszeren a MariaDB közvetlenül elérhető az alapértelmezett tárolókból. Ehhez a feladathoz az apt-t használjuk.

Az alkalmas adattárak adatainak első frissítése:

$ sudo apt update

A lerakat adatainak frissítése után futtassa:

$ sudo apt install mariadb-server

Ez telepíti a MariaDB-t és a szükséges csomagokat. Erősítse meg az ‘Y’-vel az előző parancs végrehajtása során esetlegesen megjelenő promptokat.

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

MariaDB a CentOS 7.x rendszeren

CentOS 7.x esetén az alapértelmezett CentOS-lerakatból elérhető MariaDB verzió az 5.x. Telepíteni fogjuk a MariaDB legújabb elérhető verzióját.

Ehhez először be kell állítanunk egy további yum tárolót. A MariaDB egyszerű módot kínál a mariadb_repo_setup szkript használatára. A lerakat beállításához futtassa a következő parancsokat CentOS 7.x rendszerén:

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

Ez a szkript beállítja a szükséges yum tárolót a MariaDB legújabb verziójának automatikus telepítéséhez. A cikk írásakor ez a 10.x.

Vagy ha manuálisan szeretne menni, beállíthat egy kézi yum tárolót egy új tárhelyfájl létrehozásával a következőképpen:

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

Ezután adja hozzá a következő adatokat a repo fájlhoz, és mentse el:

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

Most a MariaDB telepítéséhez futtassa az alábbi parancsot:

$ sudo yum install MariaDB-server

Erősítse meg a telepítés során megjelenő üzeneteket az „y” beírásával:

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

Ezzel befejeződik a MariaDB kiszolgáló és a függő csomagok telepítése.

MariaDB a CentOS 8.x rendszeren

CentOS 8.x esetén az alapértelmezett adattárakból elérhető verzió 10.3 vagy újabb. A MariaDB-t közvetlenül telepíthetjük a DNF paranccsal:

sudo dnf install mariadb-server

Máskülönben a legújabb elérhető verzió beszerzéséhez kövesse a CentOS 7.x előző szakaszában leírt manuális módszert, amivel munkába állhat.

A MariaDB indítása

Ubuntu gépen a MariaDB szolgáltatás közvetlenül a telepítés után fut, míg a CentOS esetében manuálisan kell engedélyeznünk és elindítanunk a megfelelő szolgáltatásokat.

Mindenesetre Ubuntu és CentOS esetén futtassa az alábbi parancsokat a MariaDB szolgáltatás elindításához, rendszerindításkor engedélyezéséhez és ellenőrzéséhez:

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

Kimenet:

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

A MariaDB biztosítása

A MariaDB telepítése utáni első lépésként root jelszó beállításával, távoli root bejelentkezés letiltásával, a tesztadatbázis, valamint a névtelen felhasználók eltávolításával és végül újratöltési jogosultságokkal kell biztosítanunk a telepítést.

  A 2014-es év 58 legjobb tippje és oktatóanyaga

Futtassa az alábbi parancsot a MariaDB keményítéséhez:

$ sudo mysql_secure_installation

Az alapértelmezett utasításokat követheti a javasolt műveletekkel, hacsak nincs konkrét követelménye az eltérésre.

Kimenet:

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

Itt a rendszer hitelesítését fogjuk használni, ezért ne állítsunk be külön root jelszót a MariaDB-hez, mivel az már biztonságos. Ha szükséges, mindig beállíthat egy külön root jelszót is.

  12 módszer a biztonságos kapcsolat létrehozására a Chrome-ban

Beállítás érvényesítése

A MariaDB beállításának ellenőrzéséhez futtassa (adja meg a mysql_secure_installation futtatása közben beállított jelszót, vagy ha akkor kihagyja, használja a rendszer gyökér hitelesítő adatait):

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

Létrehozhat egy új rendszergazdai fiókot a gyökér helyett az alábbiak szerint (módosítsa a jelszó értékét az adminisztrátori fiókhoz beállítani kívánt értékre):

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

Hozzáférés ellenőrzése új adminisztrátor felhasználóval mint (adja meg az előző lépésben beállított jelszót):

$ 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 optimalizálás

A telepítés és a MariaDB beállításának biztonságossá tétele után lépéseket kell tennie az operációs rendszer és az adatbázis hangolása érdekében az optimális teljesítmény érdekében. Ez a hangolás a rendszerkonfigurációtól, a használati típustól, a felhasználók számától és számos egyéb tényezőtől függően változhat.

Az operációs rendszer szempontjából bizonyos rendszerparaméterek konfigurálhatók a MariaDB számára, amelyeket most tárgyalunk.

Linux kernel beállítások – IO ütemező

A MariaDB számára ajánlott IO-ütemezők a noop és a határidő. Az ellenőrzéshez használja a cat /sys/block/${DEVICE}/queue/scheduler parancsot

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

Ideiglenes módosítást a következő parancs kiadásával lehet végrehajtani, és ha van ilyen, azonnali hatása a rendszer teljesítményére:

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

Annak érdekében, hogy állandó legyen, be kell állítania a GRUB konfigurációs fájljában az alábbi /etc/default/grub fájlban látható módon, újra kell építenie a GRUB-ot, és újra kell indítania a rendszert.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Erőforrás korlátok – Nyitott fájlok korlátja

A Linux általában korlátozza az egyes folyamatok által megnyitható fájlleírók számát. Egy aktív adatbázis-rendszer esetében ez a korlát könnyen meghaladhatja vagy befolyásolhatja a teljesítményt. Sok Linux rendszeren ez a korlát alapértelmezés szerint 1024. Ezen kívül lehetőség van lágy és kemény határértékekre.

A korlát növeléséhez a következő sorokat adhatja hozzá az /etc/security/limits.conf fájlhoz:

mysql soft nofile 65535
mysql hard nofile 65535

A rendszer újraindítására lesz szükség, ha a mysql felhasználó láthatja és használhatja az új korlátokat. Ez a következőképpen ellenőrizhető:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Erőforrás korlátok – Alapfájl mérete

A Linux korlátozza az alapfájlok méretét, ahogy az előző esetben is látható. Ennek ismét van lágy és kemény korlátja, és alapértelmezés szerint a lágy korlát 0-ra van állítva, ami gyakorlatilag letiltja az alapvető fájlgenerálást. Az alapfájl generálás engedélyezéséhez (a mag dump generálásához szükséges egyéb konfigurációk), növelhetjük ezt az értéket az /etc/security/limits.conf fájlban a következőképpen:

mysql soft core unlimited
mysql hard core unlimited

A rendszer újraindítása után a mysql felhasználó láthatja az új értékeket az ulimit paranccsal:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

Csere konfigurálása

  A WiFi javítása továbbra is automatikusan kikapcsol Androidon

A Linux cserelehetősége határozza meg, hogy a rendszer mekkora valószínűséggel cserél egy oldalt a memóriából a rendszeren konfigurált csereterületre. Általában az alapértelmezett érték 60, amely az alábbiakból ellenőrizhető:

sysctl vm.swappiness

Értéke 0-tól 100-ig terjedhet, ahol az alacsonyabb érték kisebb csere valószínűséget jelent. Egy csak MariaDB-t futtató adatbázis-kiszolgálón szeretnénk ezt az értéket 0-ra csökkenteni, hogy elkerüljük a swap használatát, amennyire csak lehetséges. Itt érdemes megjegyezni, hogy a 0-s felcserélési érték beállítását körültekintően kell megtenni, figyelembe véve a többi rendszertervezési tényezőt, mivel magas memóriahasználat vagy I/O terhelés esetén fennáll az esélye annak, hogy a rendszermag megöli az Out Of Memory (OOM) folyamatot.

Mivel az adatbázis-munkaterhelésekhez és így a MariaDB-adatbázisokhoz alacsony cserebeállítás ajánlott, ajánlatos a cserelehetőséget 1-re állítani. Az /etc/sysctl.conf fájl alábbi sorát felveheti, hogy ez a változás tartós legyen:

vm.swappiness = 1

A változtatások a rendszer újraindítása után lépnek életbe, bár ezt bármikor megteheti előre a sysctl paranccsal:

sysctl -w vm.swappiness=1

Fájlrendszer optimalizálás

A MariaDB esetében a legjobb Linux-fájlrendszerek általában az ext4, XFS és Btrf-ek, amelyek mindegyike megtalálható a fő Linux kernelben, és széles körben támogatott. Ezek a fájlrendszerek a legtöbb Linux disztribúción elérhetők. Minden fájlrendszernek megvannak a maga egyedi tulajdonságai és jellemzői, és megfelelő áttekintés után a követelmények alapján választhatók ki.

Továbbá nem valószínű, hogy rögzítenie kell a fájlelérési időt az adatbázis-kiszolgálón. A teljesítmény javítása érdekében ezt letilthatjuk. A megfelelő fájlrendszert felcsatolhatja a noatime opcióval, vagy hozzáadhatja az /etc/fstab fájl beillesztési beállításaihoz, hogy állandó legyen.

DB optimalizálás

A MariaDB működésén belül több hangolható is található, amelyek testreszabhatók az egyéni igények és igények alapján.

Ezek közül néhányat itt fogunk megvitatni.

A MariaDB-t többnyire a my.cnf fájl konfigurálja.

Ubuntuban a my.cnf a következő címen található:

/etc/mysql/my.cnf

A CentOS alatt a következő címen található:

/etc/my.cnf

Részletes dokumentáció arról, hogy milyen változók állnak rendelkezésre a konfigurációs fájlban történő hangoláshoz, itt található itt.

Sok függ attól is, hogy a MariaDB milyen motort használ, nevezetesen a MyISAM és az InnoDB vagy az XtraDB. Mindkettőnek megvannak a maga előnyei és hátrányai, és az egyik kiválasztása az adatbázis- és alkalmazáskövetelményektől függ.

Az innodb_buffer_pool_size-t a memória körülbelül 80%-ára kell beállítani. Ez biztosítja, hogy a munkakészlet 80%-a a memóriában legyen.

Néhány további fontos hangolható paraméter:

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

Az InnoDB vagy XtraDB változók hangolásáról további részletek találhatók itt. Lásd erre útmutató a MariaDB összes elérhető hangolási lehetőségéhez.

Ha érdekli, tekintse meg ezeket a forrásokat az SQL és a NoSQL megtanulásához.

Következtetés

A MariaDB az egyik legnépszerűbb választás, ha a relációs DBMS-ről van szó. Az, hogy nyílt forráskódú sokszínű közösséggel, tovább növeli ezt.

További információért tekintse meg azt dokumentáció amely olyan témákat foglal magában, mint az alapvető SQL, migráció, MariaDB adminisztráció, magas rendelkezésre állás, teljesítményhangolás, tárolómotorok, programozás és testreszabás. A bináris naplózást is érdemes letiltani, ha nem használ fürtöt.