Ας μάθουμε πώς να εγκαταστήσετε και να ρυθμίσετε το 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, θα πρέπει να λάβετε μέτρα για να ρυθμίσετε το λειτουργικό σύστημα και τη βάση δεδομένων σας για βέλτιστη απόδοση. Αυτός ο συντονισμός θα διαφέρει ανάλογα με τη διαμόρφωση του συστήματός σας, τον τύπο χρήσης, τον αριθμό των χρηστών και έναν αριθμό άλλων παραγόντων.
Από την άποψη του λειτουργικού συστήματος, ορισμένες παράμετροι συστήματος μπορούν να διαμορφωθούν για το 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
Η τιμή 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, υψηλή διαθεσιμότητα, ρύθμιση απόδοσης, μηχανές αποθήκευσης, προγραμματισμός και προσαρμογή. Μπορεί επίσης να θέλετε να απενεργοποιήσετε τη δυαδική καταγραφή εάν δεν χρησιμοποιείτε ένα σύμπλεγμα.