Πώς να εγκαταστήσετε και να ρυθμίσετε το MariaDB σε Ubuntu & CentOS

Ας μάθουμε πώς να εγκαταστήσετε και να ρυθμίσετε το MariaDB, ένα δημοφιλές σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων MySQL (RDBMS) ανοιχτού κώδικα.

Είναι αναπτυγμένο από την κοινότητα και έχει τη δυνατότητα εμπορικής υποστήριξης. Το MariaDB έχει σκοπό να παραμείνει εξαιρετικά συμβατό με τη MySQL, αν και υπάρχουν ορισμένες αποκλίσεις.

Σε αυτό το άρθρο, θα καλύψουμε την εγκατάσταση και τη διαμόρφωση του MariaDB στο Ubuntu 20.x και το CentOS 7.x/8.x και στο τέλος θα εξετάσουμε ορισμένες βέλτιστες πρακτικές για τη διασφάλιση και τη βελτίωση της απόδοσής του.

MariaDB στο Ubuntu

Στο Ubuntu 20.x, το MariaDB είναι διαθέσιμο απευθείας από τα προεπιλεγμένα αποθετήρια. Θα χρησιμοποιήσουμε το apt για αυτήν την εργασία.

Πρώτη ενημέρωση των δεδομένων apt repositories από:

$ sudo apt update

Μόλις ενημερωθούν τα δεδομένα του αποθετηρίου, εκτελέστε:

$ sudo apt install mariadb-server

Αυτό θα εγκαταστήσει το MariaDB και τα απαιτούμενα πακέτα. Επιβεβαιώστε με το ‘Y’ για τυχόν προτροπές που ενδέχεται να λάβετε κατά την εκτέλεση της προηγούμενης εντολής.

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

MariaDB στο CentOS 7.x

Για το CentOS 7.x, η διαθέσιμη έκδοση MariaDB από το προεπιλεγμένο αποθετήριο CentOS είναι 5.x. Θα εγκαταστήσουμε την πιο πρόσφατη διαθέσιμη έκδοση του MariaDB.

Για αυτό, πρέπει πρώτα να διαμορφώσουμε ένα επιπλέον αποθετήριο yum. Το MariaDB παρέχει έναν εύκολο τρόπο χρήσης του σεναρίου mariadb_repo_setup. Για να λάβετε τη ρύθμιση του αποθετηρίου, εκτελέστε τις ακόλουθες εντολές στο σύστημά σας CentOS 7.x:

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

Αυτό το σενάριο θα δημιουργήσει το απαιτούμενο αποθετήριο yum για να εγκαταστήσει αυτόματα την τελευταία έκδοση του MariaDB. Τη στιγμή της συγγραφής αυτού του άρθρου, είναι 10.x.

Ή σε περίπτωση που θέλετε να ακολουθήσετε τη μη αυτόματη μέθοδο, μπορείτε να διαμορφώσετε ένα μη αυτόματο αποθετήριο yum δημιουργώντας ένα νέο αρχείο repo ως:

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

Στη συνέχεια, προσθέστε τις ακόλουθες λεπτομέρειες στο αρχείο repo και αποθηκεύστε το:

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

Τώρα για να εγκαταστήσετε το MariaDB, εκτελέστε την παρακάτω εντολή:

$ sudo yum install MariaDB-server

Επιβεβαιώστε τυχόν προτροπές που εμφανίζονται κατά την εγκατάσταση πληκτρολογώντας «y»:

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

Αυτό ολοκληρώνει την εγκατάσταση του διακομιστή MariaDB και των εξαρτημένων πακέτων.

MariaDB στο CentOS 8.x

Για το CentOS 8.x, η διαθέσιμη έκδοση από τα προεπιλεγμένα αποθετήρια είναι 10.3 ή νεότερη. Μπορούμε να εγκαταστήσουμε απευθείας το MariaDB χρησιμοποιώντας την εντολή DNF:

sudo dnf install mariadb-server

Διαφορετικά, για να λάβετε την πιο πρόσφατη διαθέσιμη έκδοση, μπορείτε να ακολουθήσετε τον μη αυτόματο τρόπο όπως δίνεται στην προηγούμενη ενότητα για το CentOS 7.x και αυτό θα σας βοηθήσει να εργαστείτε.

Έναρξη MariaDB

Σε ένα μηχάνημα Ubuntu, η υπηρεσία MariaDB θα εκτελείται αμέσως μετά την εγκατάσταση, ενώ για το CentOS, πρέπει να ενεργοποιήσουμε και να ξεκινήσουμε με μη αυτόματο τρόπο σχετικές υπηρεσίες.

Σε κάθε περίπτωση, για το Ubuntu καθώς και για το CentOS, εκτελέστε τις παρακάτω εντολές για να ξεκινήσετε την υπηρεσία MariaDB, να την ενεργοποιήσετε κατά την εκκίνηση καθώς και να την επαληθεύσετε:

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

Παραγωγή:

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

Εξασφάλιση της MariaDB

Ως πρώτο βήμα μετά την εγκατάσταση του MariaDB, θα πρέπει να εξασφαλίσουμε την ανάπτυξή του ορίζοντας έναν κωδικό πρόσβασης root, απενεργοποιώντας την απομακρυσμένη σύνδεση root, αφαιρώντας τη δοκιμαστική βάση δεδομένων καθώς και ανώνυμους χρήστες και, τέλος, εκ νέου φόρτωση δικαιωμάτων.

  Πώς να αλλάξετε την αντίθεση και τον κορεσμό για την οθόνη του φορητού υπολογιστή σας

Εκτελέστε την παρακάτω εντολή για να σκληρύνετε το MariaDB:

$ sudo mysql_secure_installation

Μπορείτε να ακολουθήσετε τις προεπιλεγμένες προτροπές με προτεινόμενες ενέργειες, εκτός εάν έχετε συγκεκριμένη απαίτηση για απόκλιση.

Παραγωγή:

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

Εδώ θα χρησιμοποιήσουμε τον έλεγχο ταυτότητας του συστήματος, επομένως μην έχετε ορίσει ξεχωριστό κωδικό πρόσβασης root για το MariaDB, καθώς είναι ήδη ασφαλές. Εάν χρειάζεται, μπορείτε πάντα να ορίσετε έναν ξεχωριστό κωδικό πρόσβασης root.

Επικύρωση εγκατάστασης

Για να επαληθεύσετε τη ρύθμιση του MariaDB, εκτελέστε (καθορίστε τον κωδικό πρόσβασης που ρυθμίσατε κατά την εκτέλεση του mysql_secure_installation ή, εάν παραλείψετε εκείνη τη στιγμή, χρησιμοποιήστε τα διαπιστευτήρια root του συστήματός σας):

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

Μπορείτε να δημιουργήσετε έναν νέο λογαριασμό διαχειριστή στη θέση του root όπως φαίνεται παρακάτω (αλλάξτε την τιμή του κωδικού πρόσβασης με αυτόν που σκοπεύετε να ορίσετε για λογαριασμό διαχειριστή):

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

Επαληθεύστε την πρόσβαση με νέο χρήστη διαχειριστή ως (εισαγάγετε τον κωδικό πρόσβασης όπως ορίστηκε στο προηγούμενο βήμα):

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

Βελτιστοποίηση ΛΣ

Μετά την εγκατάσταση και τη διασφάλιση της εγκατάστασης του MariaDB, θα πρέπει να λάβετε μέτρα για να ρυθμίσετε το λειτουργικό σύστημα και τη βάση δεδομένων σας για βέλτιστη απόδοση. Αυτός ο συντονισμός θα διαφέρει ανάλογα με τη διαμόρφωση του συστήματός σας, τον τύπο χρήσης, τον αριθμό των χρηστών και έναν αριθμό άλλων παραγόντων.

  Οι 9 πιο σκληρές μηχανές σκακιού στις οποίες μπορείτε να παίξετε

Από την άποψη του λειτουργικού συστήματος, ορισμένες παράμετροι συστήματος μπορούν να διαμορφωθούν για το MariaDB, τις οποίες θα συζητήσουμε τώρα.

Ρυθμίσεις πυρήνα Linux – IO Scheduler

Οι προτεινόμενοι προγραμματιστές IO για το MariaDB είναι noop και deadline. Για έλεγχο χρησιμοποιήστε το cat /sys/block/${DEVICE}/queue/scheduler

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

Μια προσωρινή αλλαγή μπορεί να γίνει με την έκδοση της ακόλουθης εντολής και η επίδρασή της, εάν υπάρχει, θα είναι άμεση στην απόδοση του συστήματος:

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

Για να το κάνετε επίμονο, θα πρέπει να το διαμορφώσετε στο αρχείο διαμόρφωσης του GRUB όπως φαίνεται παρακάτω στο /etc/default/grub, να δημιουργήσετε ξανά το GRUB και να επανεκκινήσετε το σύστημα.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Όρια πόρων – Άνοιγμα ορίου αρχείων

Το Linux συνήθως περιορίζει τον αριθμό των περιγραφικών αρχείων που μπορεί να ανοίξει κάθε διαδικασία. Για ένα ενεργό σύστημα DB, αυτό το όριο μπορεί εύκολα να υπερβεί ή να επηρεάσει την απόδοση. Σε πολλά συστήματα Linux, αυτό το όριο είναι από προεπιλογή 1024. Επιπλέον, υπάρχει μια επιλογή soft και hard limits.

Για να αυξήσετε το όριο, μπορείτε να προσθέσετε τις ακόλουθες γραμμές στο /etc/security/limits.conf:

mysql soft nofile 65535
mysql hard nofile 65535

Θα χρειαστεί μια επανεκκίνηση του συστήματος ανάρτηση την οποία ο χρήστης mysql θα μπορεί να δει και να χρησιμοποιήσει τα νέα όρια. Αυτό μπορεί να ελεγχθεί ως:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Όρια πόρων – Μέγεθος αρχείου πυρήνα

Το Linux περιορίζει το μέγεθος των βασικών αρχείων όπως φαίνεται στην προηγούμενη περίπτωση. Και πάλι αυτό έχει ένα όριο soft και hard και από προεπιλογή το soft όριο έχει οριστεί ως 0 το οποίο ουσιαστικά απενεργοποιεί τη δημιουργία βασικών αρχείων. Για να επιτρέπεται η δημιουργία βασικών αρχείων (άλλες διαμορφώσεις που απαιτούνται για την παραγωγή core dump), μπορούμε να αυξήσουμε αυτήν την τιμή στο /etc/security/limits.conf ως:

mysql soft core unlimited
mysql hard core unlimited

Μετά την επανεκκίνηση του συστήματος, ο χρήστης mysql θα μπορεί να δει τις νέες τιμές χρησιμοποιώντας την εντολή ulimit ως:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

Διαμόρφωση Swappiness

  12 Λογισμικό διαχείρισης ψηφιακών δικαιωμάτων (DRM) το 2022

Η τιμή Swappiness στο Linux καθορίζει πόσο πιθανό είναι το σύστημα να ανταλλάξει μια σελίδα από τη μνήμη σε χώρο εναλλαγής που έχει διαμορφωθεί στο σύστημα. Συνήθως, η προεπιλεγμένη τιμή ορίζεται ως 60, η οποία μπορεί να ελεγχθεί από:

sysctl vm.swappiness

Η τιμή του μπορεί να κυμαίνεται από 0 έως 100, όπου μια χαμηλότερη τιμή σημαίνει μικρότερη πιθανότητα ανταλλαγής. Σε έναν διακομιστή βάσης δεδομένων που εκτελεί μόνο το MariaDB, θα θέλαμε να μειώσουμε αυτήν την τιμή στο 0 για να αποφύγουμε τη χρήση της ανταλλαγής όσο το δυνατόν περισσότερο. Σημειώστε εδώ ότι η ρύθμιση της τιμής swappiness στο 0 θα πρέπει να γίνεται με προσοχή λαμβάνοντας υπόψη άλλους παράγοντες σχεδιασμού του συστήματος, καθώς σε περίπτωση υψηλής χρήσης μνήμης ή φορτίου I/O, υπάρχει πιθανότητα θανάτωσης της διαδικασίας Out Of Memory (OOM) από τον πυρήνα.

Δεδομένου ότι μια ρύθμιση χαμηλής εναλλαγής συνιστάται για φόρτους εργασίας βάσεων δεδομένων και ως εκ τούτου για βάσεις δεδομένων MariaDB, συνιστάται να ορίσετε την τιμή swappiness σε 1. Μπορείτε να προσθέσετε παρακάτω γραμμή στο /etc/sysctl.conf για να κάνετε αυτήν την αλλαγή επίμονη:

vm.swappiness = 1

Οι αλλαγές θα τεθούν σε ισχύ μετά την επανεκκίνηση του συστήματος, αν και μπορείτε πάντα να το κάνετε εκ των προτέρων χρησιμοποιώντας την εντολή sysctl:

sysctl -w vm.swappiness=1

Βελτιστοποιήσεις συστημάτων αρχείων

Για το MariaDB, τα καλύτερα συστήματα αρχείων Linux θεωρούνται γενικά ως ext4, XFS και Btrfs, τα οποία περιλαμβάνονται όλα στον κύριο πυρήνα Linux και υποστηρίζονται ευρέως. Αυτά τα συστήματα αρχείων είναι διαθέσιμα στις περισσότερες διανομές Linux. Κάθε σύστημα αρχείων έχει τις μοναδικές του ιδιότητες και χαρακτηριστικά και μπορεί να επιλεγεί με βάση τις απαιτήσεις μετά από κατάλληλη αναθεώρηση.

Επιπλέον, είναι απίθανο να χρειαστεί να καταγράψετε το χρόνο πρόσβασης στα αρχεία σε έναν διακομιστή βάσης δεδομένων. Μπορούμε να το απενεργοποιήσουμε για να βελτιώσουμε την απόδοση. Μπορείτε να προσαρτήσετε το σχετικό σύστημα αρχείων με την επιλογή noatime ή να το προσθέσετε στις επιλογές προσάρτησης στο αρχείο /etc/fstab για να το κάνετε μόνιμο.

Βελτιστοποίηση DB

Υπάρχουν πολλά συντονίσιμα εσωτερικά στη λειτουργία του MariaDB που μπορούν να προσαρμοστούν με βάση τις απαιτήσεις και τις ανάγκες του καθενός.

Θα συζητήσουμε μερικά από αυτά εδώ.

Το MariaDB ρυθμίζεται κυρίως από το αρχείο my.cnf.

Στο Ubuntu, μπορείτε να βρείτε το my.cnf στη διεύθυνση:

/etc/mysql/my.cnf

Ενώ στο CentOS βρίσκεται στη διεύθυνση:

/etc/my.cnf

Μπορείτε να ανατρέξετε σε λεπτομερή τεκμηρίωση σχετικά με τις μεταβλητές που είναι διαθέσιμες για συντονισμό στο αρχείο διαμόρφωσης εδώ.

Πολλά εξαρτώνται επίσης από τον τύπο του κινητήρα που χρησιμοποιεί η MariaDB, δηλαδή, MyISAM και InnoDB ή XtraDB. Και οι δύο έχουν τα δικά τους πλεονεκτήματα και μειονεκτήματα και η επιλογή ενός εξαρτάται από τις απαιτήσεις της βάσης δεδομένων και της εφαρμογής.

Θα πρέπει να ορίσουμε το innodb_buffer_pool_size στο 80% περίπου της μνήμης σας. Αυτό διασφαλίζει ότι το 80% του σετ εργασίας σας βρίσκεται στη μνήμη.

Μερικές από τις άλλες σημαντικές συντονίσιμες παραμέτρους είναι:

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

Μπορείτε να βρείτε περισσότερες λεπτομέρειες σχετικά με τον συντονισμό μεταβλητών InnoDB ή XtraDB εδώ. Ανατρέξτε σε αυτό οδηγός για όλες τις διαθέσιμες επιλογές συντονισμού για το MariaDB.

Εάν ενδιαφέρεστε, ελέγξτε αυτούς τους πόρους για να μάθετε SQL και NoSQL.

συμπέρασμα

Το MariaDB είναι μια από τις δημοφιλείς επιλογές όσον αφορά το DBMS σχέσεων. Η ύπαρξη ανοιχτού κώδικα με μια διαφορετική κοινότητα προσθέτει περαιτέρω σε αυτό.

Για να μάθετε περισσότερα, ανατρέξτε στο τεκμηρίωση που περιλαμβάνει θέματα όπως βασική SQL, μετεγκατάσταση, διαχείριση MariaDB, υψηλή διαθεσιμότητα, ρύθμιση απόδοσης, μηχανές αποθήκευσης, προγραμματισμός και προσαρμογή. Μπορεί επίσης να θέλετε να απενεργοποιήσετε τη δυαδική καταγραφή εάν δεν χρησιμοποιείτε ένα σύμπλεγμα.